2015-02-20 1 views
0

Я использую Spring Boot и не могу правильно инициализировать один из моих компонентов. Определение выглядит следующим образом:Создание экземпляра Spring @Bean в зависимости от аннотации @Value

@Configuration 
public class BeanConfiguration { 
    @Value("${foo.config}") 
    private String fooConfig; 

    @Bean 
    public Foo getFoo(){ 
     Foo foo = new Foo(); 
     foo.setConfig(fooConfig); 
     return foo; 
    } 
} 

Затем, при использовании Foo боб autowired в foo.getConfig() равна нулю. В момент создания компонента Foo Spring еще не заполнил значение fooConfig из файла application.properties.

Что было бы правильным способом создания экземпляра компонента? Благодаря!

ответ

3

@Configuration сам по себе не является компонентом. Пример, показанный вами, кажется простым.

Мое предложение - добавить компонентное сканирование для размещения там, где существует класс Foo, используя аннотацию @ComponentScan по классу BeanConfiguration. Autowire fooConfig в самом классе Foo.

+0

Компонент не был нужен в примере и был запутанным, мой плохой. Добавление ComponentScan сделало трюк. Благодаря! – jpboudreault

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