spring的高阶使用技巧1——ApplicationListener注册监听器的使用

Spring中的监听器,高阶开发工作者应该都耳熟能详。在 Spring 框架中,这个接口允许开发者注册监听器来监听应用程序中发布的事件。Spring的事件处理机制提供了一种观察者模式的实现,允许应用程序组件之间进行松耦合的通信。

更详细的介绍和使用说明可以参看如下相关文章:

ApplicationListener 注册监听器来监听应用程序中发布的事件_applicationlistener发布事件-CSDN博客

Spring监听器用法与原理详解(带ApplicationListener模型图)-CSDN博客

一.什么是ApplicationListener接口?

它是Spring框架中的一个接口,这个接口定义了一个处理应用程序事件的方法。当一个事件被发布时,所有注册了对应事件的ApplicationListener都会被通知,并调用其onApplicationEvent()方法来处理改事件。

这个接口通常用于实现自定义的事件监听器,以便在特定事件发生时执行相应的操作。例如,你可以创建一个监听器来监听 ContextRefreshedEvent,当 Spring 应用上下文刷新完成时执行一些初始化操作。

二.如何使用ApplicationListener接口?

1.方法一:实现ApplicationListener接口

注意:

  • 实现接口后需要重写onApplicationEvent方法
  • 该方法在应用程序上下文被刷新时触发
  • 需要将新增的监听器实例加入spring管理,以便在适当的时候触发监听
/*** Spring监听器应用实例*/
@Component
public class TestApplicationListener implements ApplicationListener<ContextRefreshedEvent> {@Overridepublic void onApplicationEvent(ContextRefreshedEvent event) {//可以写初始化相关或者跨组件通信等业务操作逻辑System.out.println("Spring监听器应用实例执行成功");}}
2.方法二:使用@EventListener注解

注意:

  • 在需要监听某个方法上,加上@EventListener(ContextRefreshedEvent.class)注解后,Spring会在加载当前类时,为其创建一个监听器,这个监听器监听的事件类型ContextRefreshedEvent,当此事件发生时,将触发对应的方法。
  • 同样也需要将其加入spring容器管理,以便在适当的时候触发监听
@Component
public class MyEventListener {@EventListener(ContextRefreshedEvent.class)public void methodEvent(ContextRefreshedEvent event){System.out.println("methodEvent执行完成");}
}

三.案例测试

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/660026.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes 声明式语言 YAML

什么是 YAML YAML&#xff08;YAML Ain’t Markup Language&#xff09;是一种可读的数据序列化语言&#xff0c;通常用于配置文件、数据序列化和交换格式。YAML 的设计目标是易读易写&#xff0c;并且能够映射到动态语言中的数据结构 YA加粗样式ML 是 JSON 的超集&#xff0…

HFSS19 官方案例教程W03 - SMA接头与微带分支

SMA接头与微带分支 1►射频接头简介 连接器是电子测量中必不可少的重要部件,无论测试仪表还是DUT,无论线缆还是附件,处处都有形形色色的不同连接器的身影。对于射频工程师而言,经常用到的连接器有N型、BNC型、SMA型、3.5 mm、2.92 mm、2.4 mm、1.85 mm、1 mm这几种 (上…

CSS学习(选择器、盒子模型)

1、CSS了解 CSS&#xff1a;层叠样式表&#xff0c;一种标记语言&#xff0c;用于给HTML结构设置样式。 样式&#xff1a;文字大小、背景颜色等 p标签内不能嵌套标题标签。 px是相对于分辨率而言的&#xff0c; em是相对于浏览器的默认字体&#xff0c; rem是相对于HTML根元…

【MySQL】MVCC的实现原理

【MySQL】MVCC的实现原理 MVCC简介事务的隔离级别读未提交&#xff08;Read Uncommitted&#xff09;概念分析 读已提交&#xff08;Read Committed&#xff09;概念分析结论 可重复读&#xff08;Repeatable Read&#xff09;概念分析结论 串行化&#xff08;Serializable &am…

Java调用接口获得图片输入流InputStream并返回给前端

效果&#xff1a; 代码&#xff1a; export const getPhotoById params > get(${base}/weda/myLecture/poster/template/getPhotoById?id${params.id}&isPreview${params.isPreview},{}); // 获取原始的大图后端 Overridepublic void getPhotoById(PosterTemplate dt…

三、VUE数据代理

一、初识VUE 二、再识VUE-MVVM 三、VUE数据代理 Object.defineProperty() Object.defineProperty() 静态方法会直接在一个对象上定义一个新属性&#xff0c;或修改其现有属性&#xff0c;并返回此对象。 Object.defineProperty() 数据代理 通过一个对象代理另一个对象中属…

【启明智显技术分享】关于工业级HMI芯片Model3C的TEXT RODATA,必须要映射到PSRAM吗?

一、Model3C芯片介绍 Model3C芯片性能 Model3C&#xff08;简称M3C&#xff09;是一款基于 RISC-V 的高性能、国产自主、工业级高清显示与智能控制 MCU&#xff0c;配备强大的 2D 图形加速处理器、PNG/JPEG 解码引擎、丰富的接口&#xff0c;支持工业宽温&#xff0c;具有高…

d16(149-153)-勇敢开始Java,咖啡拯救人生

跳过了p151 四小时的讲题我不敢听&#xff1a;) Stream Stream流&#xff0c;是JDK8后新增的API&#xff0c;可以用于操作集合或者数组的数据 优势&#xff1a;大量结合了Lambda的语法风格&#xff0c;该方式更强大更简单&#xff0c;代码简洁&#xff0c;可读性好 常用方法 …

Anomalib:用于异常检测的深度学习库!

大家好,今天给大家介绍了一个用于无监督异常检测和定位的新型库:anomalib,Github链接:https://github.com/openvinotoolkit/anomalib 简介 考虑到可重复性和模块化,这个开源库提供了文献中的算法和一组工具,以通过即插即用的方法设计自定义异常检测算法。 Anomalib 包…

Python 全栈体系【四阶】(三十七)

第五章 深度学习 八、目标检测 3. 目标检测模型 3.1 R-CNN 系列 3.1.1 R-CNN 3.1.1.1 定义 R-CNN(全称 Regions with CNN features) &#xff0c;是 R-CNN 系列的第一代算法&#xff0c;其实没有过多的使用“深度学习”思想&#xff0c;而是将“深度学习”和传统的“计算…

vivado Aurora 8B/10B IP核(8)- 单工 IPCORE 的初始化

单工 IPCORE 的初始化 单工 IPCORE 不依赖于 Aurora 8B/10B 通道的信号进行初始化。 相反&#xff0c;单工通道的 TX 和 RX 侧通过一组边带初始化信号传送其初始化状态&#xff1a;对齐&#xff0c;绑定&#xff0c;验证 和复位; 一个为 TX 侧设置 TX_前缀&#xff0c;一个为…

Golang错误处理机制

文章目录 Golang错误处理机制panic异常recover捕获异常自定义错误 Golang错误处理机制 panic异常 panic异常 Go的类型系统会在编译时捕获很多错误&#xff0c;但有些错误只能在运行时检查&#xff0c;比如除零错误、数组访问越界、空指针引用等&#xff0c;这些运行时错误会引…