【发布时间】:2010-12-16 21:18:58
【问题描述】:
Spring ApplicationContext 加载过程中是否有任何挂钩?
我想在应用程序上下文加载之前运行一段代码(在实例化任何 bean/properties/aspects/etc...之前)。
提前致谢
【问题讨论】:
标签: spring
Spring ApplicationContext 加载过程中是否有任何挂钩?
我想在应用程序上下文加载之前运行一段代码(在实例化任何 bean/properties/aspects/etc...之前)。
提前致谢
【问题讨论】:
标签: spring
也许BeanFactoryPostProcessors 会满足您的需求?它们在读取整个 XML 配置文件之后运行,但在实例化任何(其他)bean 之前运行。
【讨论】:
您还可以使用ApplicationListener 接收事件通知,例如 ContextClosedEvent、ContextStartedEvent 或 ContextStoppedEvent。
更多信息请参见IoC Container 章节。
【讨论】:
ApplicationListeners 在上下文启动之前 不会收到通知,似乎没有相关事件。
我刚刚声明了自己的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>
【讨论】: