Spring Boot 启动事件和监听器,太强大了!
大家都知道,在 Spring 框架中事件和监听无处不在,打通了 Spring 框架的任督二脉,事件和监听也是 Spring框架必学的核心知识之一。
一般来说,我们很少会使用到应用程序事件,但我们也不要忘了它们的存在,比如说在 Spring 框架内部都使用了各种不同的事件来处理不同的任务。
毫无疑问,在 Spring Boot 框架中,事件和监听也得到了发扬光大,除了常用的 SpringFramework事件(例如:ContextRefreshedEvent)之外,Spring Boot 在启动过程中还发送一系列其他的应用程序事件。
Spring Boot 启动事件顺序
1、ApplicationStartingEvent
这个事件在 Spring Boot 应用运行开始时,且进行任何处理之前发送(除了监听器和初始化器注册之外)。
2、ApplicationEnvironmentPreparedEvent
这个事件在当已知要在上下文中使用 Spring 环境(Environment)时,在 Spring 上下文(context)创建之前发送。
3、ApplicationContextInitializedEvent
这个事件在当Spring应用上下文(ApplicationContext)准备好了,并且应用初始化器(ApplicationContextInitializers)已经被调用,在bean的定义(bean definitions)被加载之前发送。
4、ApplicationPreparedEvent
这个事件是在 Spring 上下文(context)刷新之前,且在 bean 的定义(bean definitions)被加载之后发送。
5、ApplicationStartedEvent
这个事件是在 Spring 上下文(context)刷新之后,且在 application/ command-line runners被调用之前发送。
6、AvailabilityChangeEvent
这个事件紧随上个事件之后发送,状态:ReadinessState.CORRECT,表示应用已处于活动状态。
7、ApplicationReadyEvent
这个事件在任何 application/ command-line runners 调用之后发送。
8、AvailabilityChangeEvent
这个事件紧随上个事件之后发送,状态:ReadinessState.ACCEPTING_TRAFFIC,表示应用可以开始准备接收请求了。
9、ApplicationFailedEvent
这个事件在应用启动异常时进行发送。
上面所介绍的这些事件列表仅包括绑定到 SpringApplication 的SpringApplicationEvents事件,除了这些事件以外,以下事件也会在 ApplicationPreparedEvent 之后和ApplicationStartedEvent之前发送:
- WebServerInitializedEvent
这个 Web 服务器初始化事件在 WebServer启动之后发送,对应的还有ServletWebServerInitializedEvent(ServletWeb服务器初始化事件)、ReactiveWebServerInitializedEvent(响应式 Web 服务器初始化事件)。
- ContextRefreshedEvent
这个上下文刷新事件是在 Spring 应用上下文(ApplicationContext)刷新之后发送。
自定义启动事件监听器
既然我们知道了 SpringBoot在启动过程中的各个事件,那么我们就可以在每个环节来处理一些我们想做的事情,只需要自定义一个监听器来监听某个事件就可以了。
比如我们想在上面的第 8 步,即应用启动完成可以接收请求了,我们简单输出一个成功标识。
Spring Boot 基础的构建这里就不介绍了,如果你对 Spring Boot还不是很熟悉,或者只是会简单的使用,那还是建议你深入学习下吧,推荐这个Spring Boot 学习仓库,欢迎 Star 关注:
https://github.com/javastacks/spring-boot-best-practice
1、新建监听器
新建一个自定义监听器,实现了 ApplicationListener 接口,泛型 AvailabilityChangeEvent表示仅仅监听AvailabilityChangeEvent 事件。
因第 8 步的事件和第 6 步的事件同名,我们可以根据事件的状态来区分到底是哪一个环节的事件 。
2、注册监听器
注册监听器有两种方式:
1、在资源目录中的 META-INF/spring.factories 文件中自动注册:
2、如果是监听 Spring 应用上下文(ApplicationContext)创建之后的事件,可以直接在监听器上使用@Component注解即可,否则需要使用第一种方法的自动注册,因为 ApplicationContext 并未创建,这时的 Bean 是不能被加载的。
3、应用启动
下面来看下启动日志:
可以看到同时输出了第 6 步和 8 步的监听日志,但只输出第 8 步的启动完成日志,自定义监听实现成功。
总结
了解了 Spring Boot 启动过程中的各个事件及监听机制,大家可以依葫芦画瓢实现 SpringBoot启动过程中的各个自定义操作,比如说在启动过程上实现动态注册、移除 Bean 等。
一般来说,不建议使用事件和监听器来实现比较耗时和繁重的任务,这样会影响应用程序的正常启动,考虑使用 Spring Boot 的application/command-line runners 来进行实现。
本文只是介绍了一下 SpringBoot启动过程中的事件及如何实现自定义监听器,怎么实现一个业务上的自定义事件和监听器不在本文范围之类,后续栈长再开一篇,关注公众号Java技术栈第一时间推送,不要走开。
本文实践所有源代码已上传:
https://github.com/javastacks/spring-boot-best-practice
参考资料:
https://docs.spring.io/spring-boot/docs/2.3.5.RELEASE/reference/htmlsingle/#boot-features-application-events-and-listeners
本文转载自微信公众号「 Java技术栈」,可以通过以下二维码关注。转载本文请联系 Java技术栈公众号。
推荐系统
雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO
语言:中文版系统大小:5.91GB系统类型:Win7雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO在系统方面技术积累雄厚深耕多年,加固了系统安全策略,雨林木风win7旗舰版系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。win7 32位旗舰装机版 v2019 05能够帮助用户们进行系统的一键安装、快速装机等,系统中的内容全面,能够为广大用户
番茄花园Ghost Win7 x64 SP1稳定装机版2022年7月(64位) 高速下载
语言:中文版系统大小:3.91GB系统类型:Win7欢迎使用 番茄花园 Ghost Win7 x64 SP1 2022.07 极速装机版 专业装机版具有更安全、更稳定、更人性化等特点。集成最常用的装机软件,集成最全面的硬件驱动,精心挑选的系统维护工具,加上独有人性化的设计。是电脑城、个人、公司快速装机之首选!拥有此系统
番茄花园 Windows 10 极速企业版 版本1903 2022年7月(32位) ISO镜像快速下载
语言:中文版系统大小:3.98GB系统类型:Win10番茄花园 Windows 10 32位极速企业版 v2022年7月 一、系统主要特点: 使用微软Win10正式发布的企业TLSB版制作; 安装过程全自动无人值守,无需输入序列号,全自动设置; 安装完成后使用Administrator账户直接登录系统,无需手动设置账号。 安装过程中自动激活
新萝卜家园电脑城专用系统 Windows10 x86 企业版 版本1507 2022年7月(32位) ISO镜像高速下载
语言:中文版系统大小:3.98GB系统类型:Win10新萝卜家园电脑城专用系统 Windows10 x86企业版 2022年7月 一、系统主要特点: 使用微软Win10正式发布的企业TLSB版制作; 安装过程全自动无人值守,无需输入序列号,全自动设置; 安装完成后使用Administrator账户直接登录系统,无需手动设置账号。 安装过程
笔记本&台式机专用系统 Windows10 企业版 版本1903 2022年7月(32位) ISO镜像快速下载
语言:中文版系统大小:3.98GB系统类型:Win10笔记本台式机专用系统 Windows 10 32位企业版 v2022年7月 一、系统主要特点: 使用微软Win10正式发布的企业TLSB版制作; 安装过程全自动无人值守,无需输入序列号,全自动设置; 安装完成后使用Administrator账户直接登录系统,无需手动设置账号。 安装过
笔记本&台式机专用系统 Windows10 企业版 版本1903 2022年7月(64位) 提供下载
语言:中文版系统大小:3.98GB系统类型:Win10笔记本台式机专用系统 Windows10 64专业版 v2022年7月 一、系统主要特点: 使用微软Win10正式发布的专业版制作; 安装过程全自动无人值守,无需输入序列号,全自动设置; 安装完成后使用Administrator账户直接登录系统,无需手动设置账号。 安装过程中自动
雨林木风 Windows10 x64 企业装机版 版本1903 2022年7月(64位) ISO镜像高速下载
语言:中文版系统大小:3.98GB系统类型:Win10新雨林木风 Windows10 x64 企业装机版 2022年7月 一、系统主要特点: 使用微软Win10正式发布的企业TLSB版制作; 安装过程全自动无人值守,无需输入序列号,全自动设置; 安装完成后使用Administrator账户直接登录系统,无需手动设置账号。 安装过程中自动激活
深度技术 Windows 10 x64 企业版 电脑城装机版 版本1903 2022年7月(64位) 高速下载
语言:中文版系统大小:3.98GB系统类型:Win10深度技术 Windows 10 x64 企业TLSB 电脑城装机版2022年7月 一、系统主要特点: 使用微软Win10正式发布的企业TLSB版制作; 安装过程全自动无人值守,无需输入序列号,全自动设置; 安装完成后使用Administrator账户直接登录系统,无需手动设置账号。 安装过程
相关文章
- 2020年第三季度APT攻击趋势分析(上)
- MontysThree工业间谍软件分析
- 突发的疫情之下,身为IT运维工程师的他们很烦恼!
- 2021 年 Web 核心性能指标是什么?谷歌工程师告诉你,FMP 过时啦!
- 除了燃油公司,美国还因为哪些黑客攻击事件,而进入“紧急状态”
- 暗网上泄漏的数据97%出自网络安全机构
- 本地连接网络怎么共享给无线连接用户上网【详细步骤】
- 零信任能彻底解决邮件安全难题
- COVID-19使关键证书颁发机构流程面临挑战
- 迈克菲本人被诉加密货币欺诈
- 随着勒索软件的兴起,网络保险显得越来越必要
- 10个好用的Web日志安全分析工具
- 为什么隐私至上的方法对基于数据的创新至关重要?
- TI Inside峰会即将启航,打造威胁情报应用生态协同盛宴
热门系统
- 1华硕笔记本&台式机专用系统 GhostWin7 32位正式旗舰版2018年8月(32位)ISO镜像下载
- 2深度技术 Windows 10 x86 企业版 电脑城装机版2018年10月(32位) ISO镜像免费下载
- 3电脑公司 装机专用系统Windows10 x86喜迎国庆 企业版2020年10月(32位) ISO镜像快速下载
- 4雨林木风 Ghost Win7 SP1 装机版 2020年4月(32位) 提供下载
- 5深度技术 Windows 10 x86 企业版 六一节 电脑城装机版 版本1903 2022年6月(32位) ISO镜像免费下载
- 6深度技术 Windows 10 x64 企业版 电脑城装机版2021年1月(64位) 高速下载
- 7新萝卜家园电脑城专用系统 Windows10 x64 企业版2019年10月(64位) ISO镜像免费下载
- 8新萝卜家园 GhostWin7 SP1 最新电脑城极速装机版2018年8月(32位)ISO镜像下载
- 9电脑公司Ghost Win8.1 x32 精选纯净版2022年5月(免激活) ISO镜像高速下载
- 10新萝卜家园Ghost Win8.1 X32 最新纯净版2018年05(自动激活) ISO镜像免费下载
热门文章
- 1迅雷云播“手机看片神器”使用教程(随时随地秒速离线云播放)
- 2Win10怎么设置网络按流量计费 Win10网络设置流量收费教程
- 3微信公众号怎么年审? 微信公众号年审流程及所需材料介绍
- 4win7蓝屏代码7f指什 怎么解决 很严重
- 5安卓手机安装运行win7系统教程 安卓手机装win7系统教程
- 6二手笔记本电脑价格是多少 二手笔记本电脑价格盘点
- 7Steam提示“需要在线进行更新,请确认您的网络连接正常”怎么办?
- 8华硕b460主板装win7系统及bios设置教程 10代CPU安装Win7教程 BIOS设置 U盘启动 完美支持USB驱动
- 9高通骁龙8cx怎么样 高通骁龙8cx处理器详细介绍
- 10aoc一体机电脑win10改win7系统及bios设置
常用系统
- 1番茄花园 Ghost XP SP3 海量驱动装机版 2019年6月 ISO镜像高速下载
- 2深度技术 Windows 10 x64 企业版 电脑城装机版2020年11月(64位) 高速下载
- 3深度技术 GHOSTXPSP3 元旦特别 电脑城极速装机版 2022年1月 ISO镜像高速下载
- 4深度技术 GHOSTXPSP3 电脑城极速装机版 2020年11月 ISO镜像高速下载
- 5番茄花园 Windows 10 六一节 极速企业版 版本1903 2021年6月(32位) ISO镜像快速下载
- 6新萝卜家园电脑城专用系统 Windows10 x86 企业版 版本1507 2021年11月(32位) ISO镜像高速下载
- 7笔记本系统Ghost Win8.1 (X64) 全新纯净版2022年3月(永久激活) 提供下载
- 8雨林木风Ghost Win8.1 (X64) 极速纯净版2020年9月免激活) ISO镜像高速下载
- 9番茄花园 Ghost XP SP3 海量驱动装机版 2021年10月 ISO镜像高速下载
- 10番茄花园Ghost Win8.1 x64 办公纯净版2020年12月(激活版) ISO镜像高速下载