Spring项目监听器ContextLoaderListener作用以及Spring工具类

1:自定义监听器 集成ContextLoaderListener,

2: 在web.xml中配置监听器


作用:

在启动Web容器时,自动装配spring applicationContext.xml的配置信息。

因为它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法。在ContextLoaderListener中关联了ContextLoader这个类,所以整个加载配置过程由ContextLoader来完成

web.xml

<listener>
    <listener-class>xx.listener.StartupListener</listener-class>
</listener>
**
 * 系统启动器
 * 
 */
public class StartupListener extends ContextLoaderListener {
    //log
    private final static Logger logger = LoggerFactory.getLogger(StartupListener.class);

    @Override
    public void contextInitialized(ServletContextEvent event) {
        logger.info("startup listener  ........");
        //获取Servlet上下文
        ServletContext sct = event.getServletContext();
        //获取Spring应用上下文
        ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(sct);
        //静态常量持有Spring上下文
        SpringUtil.initial(sct, ctx);
        //SCM初始化
        PassengerFlowDataSCMConfig.getInstance();
        logger.info("startup listener success ........");
    }
}
SpringUtil工具类:

/**
 * Spring工具类
 * 
 */
public class SpringUtil {
    //Logger
    private static final Logger LOGGER = LoggerFactory.getLogger(SpringUtil.class);
    //保持Spring上下文
    private static ApplicationContext ctx = null;
    //保持Servlet上下文
    private static ServletContext sct = null;

    /**
     * 初始化上下文
     *
     * @param newSct Servlet上下文
     * @param newCtx 系统启动时传入的上下文
     */
    public static void initial(ServletContext newSct, ApplicationContext newCtx) {
        ctx = newCtx;
        sct = newSct;
        LOGGER.info("SpringUtil initial successful!");
    }

    /**
     * 根据名称和类型获取Bean实例
     *
     * @param clazz Bean类
     * @param <T>   指定类型
     * @return Bean实例
     */
    @SuppressWarnings("unchecked")
    public static <T> T getServiceBean(Class<T> clazz) {
        if (ctx == null) {
            LOGGER.warn("SpringUtil has not been initialed!");
            return null;
        }
        return (T) ctx.getBean(clazz);
    }

    /**
     * 获取应用上下文
     */
    public static ApplicationContext getCtx() {
        return ctx;
    }

    /**
     * 获取Servlet上下文
     */
    public static ServletContext getSct() {
        return sct;
    }
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值