SpringBoot扩展接口- ApplicationListener 事件监听器

springboot 事件监听器 阅读详情

ApplicationListener监听器用来监听ApplicationEvent事件。

ApplicationListener 可以在Spring项目运行过程中,监听对应的事件,来完成相应的操作。

ApplicationListener接口

是Spring应用生命周期各个阶段的事件监听器,可以在任意一个阶段触发我们想要执行的操作
负责在每个阶段做做对应处理
比如
ApplicationEnvironmentPreparedEvent环境准备完成事件中加载配置文件属性到数据源中

在SpringBoot启动过程中,要自定义监听SpringBoot启动过程中的事件。

SpringBoot启动流程中用到了事件都是继承自 SpringApplicationEvent 类

1、ApplicationStartingEvent:  在Spring最开始启动的时候触发
  日志系统初始化,字符集初始化,消息转换器,类型转换器初始化。
2、ApplicationEnvironmentPreparedEvent:环境准备完成事件,在Spring已经准备好上下文但是上下文尚未创建的时候触发
  命令行参数,配置文件属性源加载到Environment 3、ApplicationPreparedEvent:上下文准备完成事件,刷新上下文之前触发 4、ApplicationStartedEvent:应用启动完成事件,在刷新上下文之后、调用application命令之前触发
  在这里bean定义加载,并实例化完成,已经注册到BeanFactory 5、ApplicationReadyEvent:在调用applicaiton命令之后触发 6、ApplicationFailedEvent:在启动Spring发生异常时触发

添加启动流程的事件监听器的常用方法有两种

1、在META-INF/spring.factories文件中设置监听器:

# Application Listeners
org.springframework.context.ApplicationListener=\
org.springframework.boot.ClearCachesApplicationListener,\
org.springframework.boot.builder.ParentContextCloserApplicationListener,\

2、在启动类中,先调用SpringApplication构造方法,再将自定义监听器设置进去。

在SpringBoot启动过程中,上下文事件监听器的处理过程

prepareContext()方法中

listeners.contextLoaded(context);

执行这个代码时,会将SpringApplication中的 监听器列表复制到ApplicationContext的监听器列表中。

到 refreshContext()方法时,

initApplicationEventMulticaster();
registerListeners();

会初始化ApplicationContext的事件广播类,SimpleApplicationEventMulticaster

将ApplicationContext的 事件监听器列表, BeanFactory中的 ApplicationListener实现类的Bean定义名称都注册到事件广播器中。

启动过程的事件之外的事件(自定义)

自定义事件以及事件监听器的方法

除了上面两种方法外,

3、实现监听器类,定义为Bean类,可以被自动添加到列表中

SpringApplicationRunListener接口

SpringBoot中的事件广播是通过监听器SpringApplicationRunListener接口实现类EventPublishingRunListener来进行事件分发从而调用ApplicationListener监听器的

所以我们可以配置自定义的springboot的监听器

配置在META-INF/spring.factories文件中配置

# Run Listeners
org.springframework.boot.SpringApplicationRunListener=\
org.springframework.boot.context.event.EventPublishingRunListener
【SpringBoot】ApplicationEvent与ApplicationListener Spring的世界中有这么一对好基友,两个人总是同时出现,相爱相杀。这就是ApplicationEvent与ApplicationListener。感觉有点像小偷和警察,只要ApplicationEvent一出现,ApplicationListener就会发现TA。Spring Boot 之事件(Event) 阅读详情

相关推荐

揭秘cocos-mcp:如何用AI助手提升CocosCreator游戏开发效率

本文深入介绍了cocos-mcp工具,它作为连接AI助手与CocosCreator编辑器的桥梁,遵循MCP协议,能显著提升游戏开发效率。通过自然语言指令,开发者可让AI直接查询场景结构、批量修改属性或生成上下文代码,将重复操作变为智能调度,实现从“手动操作者”到“指令指挥官”的工作流变革。

weixin_29001683的博客 1051

spring boot源码-监听器

一,先自己实现两个监听器 1.实现ApplicationListener接口,泛型ApplicationStartingEvent,监听ApplicationStartingEvent事件 @Order(1) public class FirstListener implements ApplicationListener<ApplicationStartingEvent> { ...

qq_15556155的博客 295

从VoLTE高清通话到5G新通话:手把手带你用Wireshark抓包分析QCI 1, 2, 5, 9的建立与切换过程

本文详细解析了从VoLTE高清通话到5G新通话的QCI(QoS Class Identifier)建立与切换过程,通过Wireshark抓包实战演示如何分析QCI 1、2、5、9的承载机制。内容涵盖QCI基础概念、实验环境搭建、VoLTE通话建立过程分析以及5G新通话中的QoS演进,为网络工程师和通信技术爱好者提供实用的技术指南和优化建议。

weixin_30788619的博客 342

盘点10个Spring实际开发中最常用扩展点

Spring的核心思想就是容器,具有控制反转(IoC)和面向切面(AOP)两大核心;更是封装了Spring,遵循约定大于配置,加上自动装配的机制。很多时候我们只要引用了一个依赖,几乎是零配置就能完成一个功能的装配。一个高级开发者如果想精通Spring,不能仅仅局限于对框架的使用,而是需要对Spring进行深入理解,了解Spring对Bean是如何进行管理的,熟知Spring的各个扩展点。在网上搜索Spring扩展点,发现很少有博文说的很全的,只有一些常用的扩展点的说明。

2301_76607156的博客 924

QTabWidget动态标签页管理:从代码创建到UI设计的实战指南

本文深入探讨了QTabWidget动态标签页管理的实战技巧,涵盖从纯代码创建到UI设计器布局的两种核心方法。详细讲解了如何动态添加、插入、关闭标签页,并管理其内容与生命周期。文章还提供了标签页精细化控制、界面优化(如设置图标、样式表)以及构建简易多文档编辑器的进阶实战案例,帮助开发者灵活应对数据监控、多文档编辑等复杂界面需求。

omega的博客 866

深入探究贝叶斯网络(Bayesian Network):从基础原理到实际应用

贝叶斯网络,也称为信念网络或有向无环图模型,是一种概率图模型。它使用有向无环图(DAG)来表示随机变量之间的条件依赖关系。每个节点代表一个随机变量,边表示变量之间的条件依赖关系。贝叶斯网络作为一种强大的工具,通过结合概率论和图论,为复杂系统建模和推理提供了有效手段。无论是在医学诊断、故障检测还是自然语言处理等领域,它都展示了巨大的潜力。然而,其计算复杂度高、结构学习困难等挑战也需要我们在实际应用中不断优化算法和技术。希望通过本文,你能对贝叶斯网络有更深入的理解,并能够在实际项目中灵活应用这一强大工具。

qq_28791753的博客 5973

SpringBoot Security用户认证成功或失败监听处理

Spring boot Security 用户认证成功失败事件监听器 ApplicationEvent以及Listener是Spring为我们提供的一个事件监听、订阅的实现,内部实现原理是观察者设计模式,设计初衷也是为了系统业务逻辑之间的解精,提高可扩展性以及可维护性。事件发布者并不需要考虑谁去监听,监听具体的实现内容是什么,发布者的工作只是为了发布事件而已。 一、@EventListener注解方式 注解方式比较简单不需要实现任何接口,代码如下: import org.springframework.co

花开半夏 · 流年似水 3008

六轴机械臂正逆解计算

机械臂运动学就是。包括(Forward Kinematics)和(InverseKinematics)两部分。正运动学就是逆运动学则是关节变量->机械臂末端执行器的姿势=正向运动学机械臂未端执行器的位姿->关节变量=逆向运动学。

gaoxiaochan的博客 1万+

SpringBoot监听器之发布订阅、观察者模式

SpringBoot监听器使用 实现方式有2种:实现ApplicationListener 接口;添加@EventListener 注解。 必须要的角色: 1、事件(event)可以封装和传递监听器中要处理的参数,如对象或字符串,并作为监听器中监听的目标。 2、监听器(listener)具体根据事件发生的业务处理模块,这里可以接收处理事件中封装的对象或字符串。 3、事件发布者(publisher)事件发生的触发者。 接口实现: 自定义事件需要继承Spring的ApplicationEvent 自定义监听器需

小小白兔兔 432

深度探索:非线性随机森林(Nonlinear Random Forest,NL-RF)原理及应用

非线性随机森林(NL-RF)旨在通过结合集成方法与高级技术来捕捉和建模数据中的非线性关系,从而改善传统随机森林在处理复杂非线性数据结构时的表现。

qq_51320133的博客 2067

Vue2 - 最新详细实现网站内部打开预览 office 全套附件,在页面弹窗内解析预览 word文档、excel电子表格、ppt演示文稿(docx|xlsx|pptx|pdf|txt等文件)详细代码

vue2,nuxt2,office,文档,文件,查看预览,弹框预览,下载预览,如何预览pdf文档,打开查看,office全套文档,实现在线预览文件,小程序内预览word文件,手机h5移动端网页,nuxt文档在线预览,预览office最好用的插件,下载查看,Office在线预览,vue-office,vue如何使用vue-office教程示例,word文档,ppt,exce表格,预览电子文件,文档无法解析,打不开,报错,失效,保存下载,vue前端预览并下载doc、xls、pdf、txt及图片,vue2中预览p

🏆 前端领域优质创作者 1万+

springboot之ApplicationListener

如果在上下文中部署一个实现了ApplicationListener接口的bean,那么每当在一个ApplicationEvent发布到 ApplicationContext时,这个bean得到通知。其实这就是标准的Oberver设计模式。 ApplicationListener 是一个接口,里面只有一个onApplicationEvent方法。具体的执行逻辑 @FunctionalInterfac...

william的专栏 3103

从Overleaf上导出Latex论文发布到arxiv详细教程(常见问题与解决)

如果是做cv的论文请选择“Computer Vision and Pattern Recognition”,选择“Artificial Intelligence”可能会被on hold,貌似这个指的是传统的人工智能?我用公司邮箱注册发布一篇论文,一个多月还是“on hold”状态,换成edu邮箱第二天就被发布了。3、有可能是subject class选错了,编辑会帮你手动选择,然后发一封邮件告知你解除……报错缺失bbl等文件,这是因为从Menu中下载的话,是没有bbl文件的。论文被on hold。

沉迷单车的追风少年 3586

【spring】Spring事件监听器ApplicationListener的使用与源码分析

Override@AutowiredapplicationEventPublisher.publishEvent(new CustomEvent("自定义事件"));applicationEventPublisher.publishEvent(new CustomEvent("自定义事件"));@Override。

m0_74825541的博客 693

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

SpringBoot核心机制三、ApplicationListener

文章目录一、事件监听器使用1、自己实现一个事件监听器2、事件监听器的其他配置方式:2.1 SpringApplication.addListener2.2 基于注解添加2.3 在SpringBoot的配置文件中配置二、核心机制解读三、SpringBoot中的核心实现 所有调试均使用SpringBoot 2.4.5版本。 ApplicationListener事件监听机制其实是由Spring提供的,应用内部的事件驱动机制。也就是Pub/Sub发布订阅机制在应用内部的实现。一般主要是用于监控应用内部的一些运

roykingw的专栏 1659

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

SpringBoot启动过程中涉及到了扩展接口

1、ApplicationListener接口 2、上下文环境配置文件扩展:EnvironmentPostProcessor (重要) 3、ApplicationContextInitializer接口 上下文初始化器 4、BeanFactoryPostProcessor接口 对BeanFactory操作了后置处理器 (重要) 5、Aware接口及其子接口会在refreshContext()方法...

zhanboring的博客 94

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Spring原理解析 之扩展原理-ApplicationListener

简介 * 3、ApplicationListener:监听容器中发布的事件。事件驱动模型开发; * public interface ApplicationListener<E extends ApplicationEvent> * 监听 ApplicationEvent 及其下面的子事件; * * 步骤: * 1)、写一个监听器(Application...

const_ 752
上一篇: SpringBoot扩展接口-SpringApplicationInitializer 初始化器
下一篇: SpringBoot扩展接口- BeanFactoryPostProcessor后置处理器
zhanboring
博客等级 码龄11年 1粉丝 171原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值