调用方法在初始化所有SpringBeans和ApplicationContext之后

时间:2010-08-04 20:34:42

标签: java spring

我在复杂的java程序中有一个方法,需要在初始化Web ApplicationContext和SpringBeans之后立即调用它。

我试着玩弄 <bean id="..." class="..." init-method="initialize"> 但是这种方法会调用applicationContext.get().getBean(beanId);方法。

我想知道是否有人知道如何做到这一点。

谢谢。

3 个答案:

答案 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