spring web项目下,判断项目是否启动完成
本文同时发布于见鬼网:https://faceghost.com/article/483341
概述:spring 加载完成后,我们有时候会做一些初始化工作,如加载一些缓存,DB,等,这里采用实现ServletContextListener接口,来去判断。
特别注意的地方是,我们在web.xml中配置这个listener一定要在spring配置的下面。
web.xml
<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!--放在spring init 之后 --> <listener> <listener-class>com.xx.listener.WebAppContentListener</listener-class> </listener>
WebAppContentListener.java
package com.xx.listener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import org.apache.log4j.Logger; import org.springframework.context.ApplicationContext; import org.springframework.web.context.support.WebApplicationContextUtils; public class WebAppContentListener implements ServletContextListener { private static final Logger log = Logger.getLogger(WebAppContentListener.class); public static ApplicationContext WEB_APP_CONTEXT = null; @Override public void contextInitialized(ServletContextEvent sce) { WEB_APP_CONTEXT = WebApplicationContextUtils.getWebApplicationContext(sce.getServletContext()); if(WEB_APP_CONTEXT != null) { log.info("started ...");/** * 在这里做一些初始化工作。 * * ApplicationContext 可以获取spring容器的bean * * e.g. * * WEB_APP_CONTEXT.getBean(args) * */ } } @Override public void contextDestroyed(ServletContextEvent sce) { } }