Spring applicationcontext加载钩子

时间:2009-11-15 23:05:18

标签: spring

Spring ApplicationContext加载过程是否有任何挂钩?

我想在应用程序上下文加载之前运行一段代码(在实例化任何bean / properties / aspects / etc之前)。

提前致谢

3 个答案:

答案 0 :(得分:6)

也许BeanFactoryPostProcessors会满足您的需求?它们在读取整个XML配置文件之后但在实例化任何(其他)bean之前运行。

答案 1 :(得分:5)

您还可以使用ApplicationListener接收ContextClosedEvent,ContextStartedEvent或ContextStoppedEvent等事件的通知。

IoC Container章节中的更多信息。

答案 2 :(得分:2)

我刚刚声明了自己的ContextLoaderListener,以便在加载Spring上下文之前执行所需的工作。它适用于web-apps,只需在Spring上下文监听器之前声明它:

public class MyServletContextListener implements ServletContextListener {

    @Override
    public void contextDestroyed(ServletContextEvent arg0) {

    }

    @Override
    public void contextInitialized(ServletContextEvent arg0) {
        //Perform your stuff here
    }

}
<listener>
    <listener-class>
        com.myCompany.listeners.MyServletContextListener</listener-class>
</listener>

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>