Я использую Spring 4 с SpringBoot и Spring -Web с конфигурацией Java.
Чтобы запустить @PostConstruct
аннотированные методы, выполняемые Spring, необходимо зарегистрировать CommonAnnotationBeanPostProcessor
с контекстом, иначе @PostConstruct
игнорируется.
В конфигурации Spring на основе XML документы говорят, что использовать (под элементом beans)
<context:annotation-config/>
Я также видел пример, когда регистрация выполняется на индивидуальной основе bean, например:
<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" />
Я хочу избежать этого, если это возможно. Мой проект не содержит никакого XML файла, и ничто не создано для меня в моей папке сборки.
В настоящее время мое решение состоит в том, чтобы аннотировать мой класс @ComponentScan
, который, как я считаю, вызывает Spring для обнаружения и регистрации @Component
и @Bean
s.
Так или иначе, это вызывает CommonAnnotationBeanPostProcessor
для вызова, хотя я понятия не имею, почему, но он решает мою проблему!
(Этот класс имеет одно свойство @Autowired
, которое при запуске является нулевым, поэтому необходимо выполнить инициализацию через @PostConstruct
)
Но опять же, мой вопрос, каков правильный способ достичь этого, используя конфигурацию Java? Спасибо!