Spring ApplicationContext加载过程是否有任何挂钩?
我想在应用程序上下文加载之前运行一段代码(在实例化任何bean / properties / aspects / etc之前)。
提前致谢
答案 0 :(得分:6)
也许BeanFactoryPostProcessor
s会满足您的需求?它们在读取整个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>