我在复杂的java程序中有一个方法,需要在初始化Web ApplicationContext和SpringBeans之后立即调用它。
我试着玩弄
<bean id="..." class="..." init-method="initialize">
但是这种方法会调用applicationContext.get().getBean(beanId);
方法。
我想知道是否有人知道如何做到这一点。
谢谢。
答案 0 :(得分:15)
In Spring 4.2 onwards you can attach event listeners to Springs Lifecycle events (and your own) using annotations. Simple add the @EventListener to a method and include the event type as the first (and only) parameter and Spring will automatically detect it and wire it up.
https://spring.io/blog/2015/02/11/better-application-events-in-spring-framework-4-2
@Component
public class MyListener {
@EventListener
public void handleContextRefresh(ContextRefreshedEvent event) {
...
}
}
答案 1 :(得分:14)
您可以使用ApplicationListener
抓住ContextRefreshedEvent
。
答案 2 :(得分:2)
您可以添加一个可以访问相关bean的自定义BeanFactoryPostProcessor。