2015-05-14 4 views
0

Я новичок в Java/Spring и попытался прочитать свойства из файла. Это то, что я сделал до сих пор.Чтение свойств из файла в Java Spring

Controller.java запускает приложение:

import org.springframework.boot.*; 
import org.springframework.boot.autoconfigure.*; 

@EnableAutoConfiguration 
public class Controller { 
    public static void main(String[] args) throws Exception { 
     SpringApplication.run(Controller.class, args); 
     Test test = new Test(); 
     test.doWork(); 
    } 

} 

Это вызывает метод DoWork() из Test.java:

import org.springframework.beans.factory.annotation.Value; 
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 
import org.springframework.context.annotation.PropertySource; 

@EnableAutoConfiguration 
@PropertySource("application.properties") 
public class Test { 

    @Value("${db.password}") 
    private String dbPassword; 

    public void doWork() { 
     System.out.println(dbPassword); 
    } 

} 

Я положил некоторые свойства в application.properties:

db.password=Snap&Fudge! 

Файл структура проекта выглядит так:

./pom.xml 
./src/main/java/Controller.java 
./src/main/java/Test.java 
./src/main/resources/application.properties 

При запуске приложения, я вижу, что Test.doWork() запускается, но вместо того, распечатав свойство, она возвращает null.

Вы видите, что я делаю неправильно?

+0

Вы создаете новый экземпляр теста самостоятельно, вместо использования экземпляра, управляемого весной. –

ответ

2

Вы создаете новый экземпляр теста самостоятельно, вместо использования экземпляра, управляемого весной.

Сначала измените свой класс Controller.

@SpringBootApplication 
public class Controller { 
    public static void main(String[] args) throws Exception { 
     ApplicationContext ctx = SpringApplication.run(Controller.class, args); 
     Test test = ctx.getBean(Test.class); 
     test.doWork(); 
    } 
} 

Далее измените свой класс Test.

@Component 
public class Test { 

    @Value("${db.password}") 
    private String dbPassword; 

    public void doWork() { 
     System.out.println(dbPassword); 
    } 

} 

Теперь вы будете иметь Spring управляемый (и настроенный) экземпляр Test класса, который вы получите от ApplicationContext.

Смежные вопросы