Регистрация аннотируемого класса @Component программно
Я новичок в Spring Framework, моя проблема состоит в том, чтобы зарегистрировать Spring-компонент через контекст приложения Spring. Я пробовал это разными способами, но пока не повезло.
@Configuration
@ComponentScan("com.example.app")
@EnableAutoConfiguration
public class ContextDataConfiguration
{
...
}
зарегистрировал это с
@PostConstruct
public void initilize()
{
AutowireCapableBeanFactory beanFactory = context.getAutowireCapableBeanFactory();
beanFactory.initializeBean( new ContextDataConfiguration(), "contextDataConfiguration" );
}
но другие компоненты, указанные в классе ContextDataConfiguration, не инициализируются с этим подходом.
И если я указываю класс ContextDataConfiguration в компонентном сканировании, он работает, но он выдает мне ошибку вроде
класс не управляемого типа
Есть ли альтернативный способ сделать это, пожалуйста, помогите мне.
2 ответа
Вы можете использовать аннотацию @Bean в фабричном методе для инициализации вашего компонента. Итак, допустим, у вас есть MyBean
компонент и хочет его инициализировать... Вы можете сделать это внутри своего класса @Configuration:
@Bean
public MyBean myBean() {
MyBean myBean = ... // initialize your bean here
return myBean;
}
Как насчет
@Bean
public ContextDataConfiguration contextDataConfiguration(){
return new ContextDataConfiguration();
}
Это регистрирует экземпляр ContextDataConfiguration
как боб.