Раньше я сознательно смешивал Xml с сопоставлениями @Component в каждом конкретном случае как средство документирования неочевидных bean-компонентов.
Типичный вариант использования: Я объявляю bean-компоненты, которые будут изменять поведение самого Spring, я объявлю их явно, а не позволю им быть обнаруженными, просто для улучшения ясности файла конфигурации.
Однако часто этим bean-компонентам требуется определенная степень @Autowiring. Если я создаю компонент самостоятельно в конфигурации Java, я становлюсь ответственным за выполнение этого подключения, что бессмысленно.
Существует ли чистая конфигурация Java вариант, который явно возвращает класс Spring и позволяет ему управлять созданием экземпляра?
т.е.:
Дано класс:
Код: Выделить всё
public class MyFunkySpringBean implements InitializingBean {
@Autowired Foo foo;
}
Код: Выделить всё
Например:
Код: Выделить всё
@Configuration
public class MyAppConfig {
// Explictly provide the class, not the instance to Spring
@Bean
public MyFunkySpringBean funkyBean; // No instance -- it's up to Spring to build
}
Код: Выделить всё
@Configuration
public class MyAppConfig {
@Bean
public MyFunkySpringBean funkyBean() {
MyFunkySpringBean bean = new MyFunkySpringBean();
bean.foo = new Foo();
// other dependencies go here
return bean;
}
}
Подробнее здесь: https://stackoverflow.com/questions/233 ... class-only
Мобильная версия