• 【Spring框架】 ☞ 项目启动时执行特定处理及ApplicationListener源码分析


    1、背景

      在一些业务场景中,在容器启动完成后,需要处理一些诸如:kafka业务注册,数据处理,初始化缓存等的操作。

      本文重点介绍如何在服务启动中,或启动完成时执行相关处理。

    2、针对上述场景,有如下实现方法

      A:实现基于javaweb的ServletContextListener接口,重写contextInitialized()接口

       

      B:实现基于javaweb的javax.servlet包下的Filter接口,重写init(FilterConfig filterConfig)接口

       

      C:继承基于javaweb的servlet包下的HttpServlet父类,重写init()接口即可

       

      D:实现基于Spring的ApplicationListener<ContextRefreshedEvent>接口,重写onApplicationEvent(ContextRefreshedEvent event)接口

       

     总结:基于javaweb实现的接口,均需要在web.xml注册才可以启动时扫描到。基于Spring实现的,需要把对象注册到容器中。

      下面是在一个加载顺序,可以看出 Listener和Filter是在Servlet之前执行的。

     

    3、ApplicationListener源码分析

      可以先看下 https://blog.csdn.net/u014263388/article/details/78996509

      后续会上源码分析

  • 相关阅读:
    BZOJ 3924: [Zjoi2015]幻想乡战略游戏
    codevs 4244 平衡树练习
    BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊
    BZOJ 2038: [2009国家集训队]小Z的袜子
    luogu P3709 大爷的字符串题
    BZOJ 2120: 数颜色
    luogu P2056 采花
    luogu P2709 小B的询问
    BZOJ 1878: [SDOI2009]HH的项链
    Codeforces 221d D. Little Elephant and Array
  • 原文地址:https://www.cnblogs.com/liuxs13/p/9284445.html
Copyright © 2020-2023  润新知