spring web项目下,判断项目是否启动完成
原创    xingfu2017    发表于:2018-01-24 14:17:04
  阅读 :196   收藏   编辑

概述: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 ...");
            System.out.println("server started ...");


            /**
             * 在这里做一些初始化工作。
             * 
             * ApplicationContext 可以获取spring容器的bean
             * 
             * e.g.
             * 
             * WEB_APP_CONTEXT.getBean(args)
             * 
             */

        }
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {

    }

}
评论
条评论