Регистрация аннотируемого класса @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 как боб.

Другие вопросы по тегам