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

后续会上源码分析

转载于:https://www.cnblogs.com/liuxs13/p/9284445.html

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

  1. spring配置项目启动时执行

    首先在配置文件中添加配置 <!-- 配置项目启动时执行  init方法--> <bean id="smsmanage" class="com.longr ...

  2. java 项目启动初始化_Spring项目启动时执行初始化方法

    一.applicationContext.xml配置bean init-method="initKeyWord"> classpath:sensitive-word.xml ...

  3. java启动时执行_java怎么实现项目启动时执行指定方法

    本文实例为大家共享了java项目启动时执行指定方法,供大家参考,详细内容如下 想到的就是监听步骤如下: 1.配置web.xml com.listener.InitListener 2.编写InitLi ...

  4. 【实战】Spring生成beanName冲突的解决之道:附源码分析

    一.问题描述 最近公司项目打算模块化,其实一个原因也是为了能够整合公司多个业务的代码,比如一个资源xxx,两个业务中都有对这个资源的管理,虽然是一个资源,但是是完全不同的定义.完全不同的表.不同的处理 ...

  5. spring在项目启动时就执行特定方法

    如何在项目启动时就执行特定方法 1. 方法上加注解@PostConstruct @Compant public class InitDemo{@PostConstructpublic void ini ...

  6. spring项目停止时执行特定代码

    spring项目停止时 ,执行某个方法 1.spring配置bean的信息 ,指定销毁时执行clean()方法 <bean id="shutDownListener" cla ...

  7. springmvc项目在启动完成之后执行一次方法_SpringMVC源码分析

    一 SpringMVC运行原理 二 SpingMVC源码分析 1 DispatcherServlet 1.1 DispatcherServlet继承结构 ServletConfig对象获取Init标签 ...

  8. 【Spring】IOC:基于注解的IOC容器初始化源码分析

    从 Spring2.0 以后的版本中,Spring 也引入了基于注解(Annotation)方式的配置,注解(Annotation)是 JDK1.5 中引入的一个新特性,用于简化 Bean 的配置,可 ...

  9. pbp 读取 mysql数据_SqlAlchemy 中操作数据库时session和scoped_session的区别(源码分析)...

    原生session: from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine from sqlalch ...

最新文章

  1. MySQL中,当update修改数据与原数据相同时会再次执行吗?
  2. python windows错误码
  3. U-NET 图像预处理
  4. 著名物理学家斯蒂芬•霍金去世,他曾告诫人类要学会避免人工智能可能的风险
  5. 回溯法和DFS leetcode Combination Sum
  6. 微型计算机显示器引线,微型计算机的显示器通常有两组引线,即分别是( )...
  7. [Leedcode][JAVA][第999题][直接考虑题意]
  8. CCKS 2018 | 工业界论坛报告简介
  9. InfoQ观点:Java EE的未来
  10. Theano 中文文档 0.9 - 7.1.1 Python教程
  11. 服务端Latex解析成图片或者HTML或者SVG方案
  12. Redis实现MongoDB的getlasterror功能
  13. 计算机行显示性能调整,win7系统怎么调节为最佳性能模式-win7性能,win7运行速度提高90%...
  14. WordPress the_excerpt()截取摘要长度
  15. threejs基于vue加载模型,让模型开启自动旋转 模型位置改变
  16. 人工智能实验-动物识别系统
  17. 在clubof.net上建立了个人主页
  18. papers-06-07
  19. 新型勒索软件Phobos利用弱安全性***目标
  20. 失眠尽快入睡小妙招,这些助眠产品让你一招入睡

热门文章

  1. python中运行结果为false-python 两个一样的字符串用==结果为false问题的解决
  2. rf中resourceid_解决VC++ MFC程序resource.h头文件中ID重复问题
  3. html5基础知识点文本标签
  4. Vue 3.0响应式API案例
  5. 为什么要学jquery
  6. C#学生信息管理系统
  7. java整数翻转_java实现整数反转
  8. 玩转Linux必备知识(四)
  9. 网站开发流程-WEB开发的流程
  10. storm集群操作指南