【Spring】简化事件的使用,Spring提供了2种使用方式
Spring中事件可以配置顺序,利用线程池还可以做异步线程通知。怎么样使用事件?Spring简化事件的使用,Spring提供了2种使用方式:面向接口和面向@EventListener注解。
1,面相接口的方式
案例
发布事件
需要先继承ApplicationEventPublisherAware 后发布事件
@Component
public class UserRegisterService implements ApplicationEventPublisherAware {private ApplicationEventPublisher applicationEventPublisher;/*** 负责用户注册及发布事件的功能** @param userName 用户名*/public void registerUser(String userName) {//用户注册System.out.println(String.format("用户【%s】注册成功", userName));//发布注册成功事件this.applicationEventPublisher.publishEvent(new UserRegisterEvent(this, userName));}@Overridepublic void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) { this.applicationEventPublisher = applicationEventPublisher;}
}
然后在监听器中处理业务功能。
监听事件
@Component
public class SendEmailListener implements ApplicationListener<UserRegisterEvent> {@Overridepublic void onApplicationEvent(UserRegisterEvent event) {System.out.println(String.format("给用户【%s】发送注册成功邮件!", event.getUserName()));}
}
2,面相@EventListener注解的方式
案例用法
直接将这个注解标注在一个bean的方法上,那么这个方法就可以用来处理感兴趣的事件,使用更简单,如下,方法参数类型为事件的类型:
@Component
public class UserRegisterListener {@EventListenerpublic void sendMail(UserRegisterEvent event) {System.out.println(String.format("给用户【%s】发送注册成功邮件!", event.getUserName()));}
}
相关文章:
【Spring】简化事件的使用,Spring提供了2种使用方式
Spring中事件可以配置顺序,利用线程池还可以做异步线程通知。怎么样使用事件?Spring简化事件的使用,Spring提供了2种使用方式:面向接口和面向EventListener注解。 1,面相接口的方式 案例 发布事件 需要先继承ApplicationEventP…...
探究Spring事务:了解失效场景及应对策略
在现代软件开发中,数据的一致性和完整性是至关重要的。为了保证这些特性,Spring框架提供了强大的事务管理机制,让开发者能够更加自信地处理数据库操作。然而,事务并非银弹,存在一些失效的情景,本文将带您深…...
Maven Manifold 条件编译
Maven 配置 通过 Maven 的不同 profile 实现不同环境传递不同符号。另外 lombok 可以 manifold 一同使用,见下方配置。 <properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.targ…...
4.数组与基本数学函数
一、数组 1.概念 数组是存放相同类型对象的容器,数组中存放的对象没有名字,而是要通过其所在的位置访问。数组中的每一个元素都相当于一个普通的变量,可以和普通变量一样进行赋值操作。 数组可以帮助我们批量地处理相同数据类型的相关数据…...
python与深度学习(十六):CNN和宝可梦模型二
目录 1. 说明2. 宝可梦模型的CNN模型测试2.1 导入相关库2.2 加载模型2.3 设置保存图片的路径2.4 加载图片2.5 数据处理和归一化2.6 对图片进行预测2.7 显示图片 3. 完整代码和显示结果4. 多张图片进行测试的完整代码以及结果 1. 说明 本篇文章是对上篇文章宝可梦模型训练的模型…...
PTA 1030 Travel Plan
个人学习记录,代码难免不尽人意。 A traveler’s map gives the distances between cities along the highways, together with the cost of each highway. Now you are supposed to write a program to help a traveler to decide the shortest path between his/h…...
MFC、Qt、WPF?该用哪个?
MFC、Qt和WPF都是流行的框架和工具,用于开发图形用户界面(GUI)应用程序。选择哪个框架取决于你的具体需求和偏好。MFC(Microsoft Foundation Class)是微软提供的框架,使用C编写,主要用于Windows…...
使用logback记录日志
1. Pom引用依赖 <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.11</version> </dependency> 2. logback.xml <?xml version"1.0" encoding"U…...
企业工程项目管理系统源码(三控:进度组织、质量安全、预算资金成本、二平台:招采、设计管理) em
工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#…...
【安装】XMind2022XMind2020安装教程(资源)
Xmind是一个制作思维导图很便利的软件。 1.资源链接 Xmind2022: 链接:https://pan.baidu.com/s/1j4DFedxxX2YJ3HBy1-MpHw?pwdxmin 提取码:xmin Xmind2020: 链接:https://pan.baidu.com/s/1wNqMApuy0yoBF2CvpBDpDA?pwdxmin 提取码&#x…...
Windows下QT Creator安装MinGW 32bit编译器
前言 注:本作者是基于FFmpeg开发需要,故在Windows下QT Creator中安装MinGW 32bit编译器!其它型号编译器参照此文章基本可以实现! 一、下载需要的编译器 1、下载链接 链接: 链接:https://pan.baidu.com/…...
Emacs之解决键值绑定冲突问题(一百二十三)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...
瞄准产业应用,大模型加持的深兰科技AI虚拟数字人落地业务场景
伴随ChatGPT的问世,在技术与商业运作上都日渐发展成熟的AI数字人产业正持续升温。 目前的AI数字人不仅拥有超高“颜值”,同时还拥有更为丰富的、细腻的表情和动作。更有甚者,AI数字人已经具备自定义构建知识图谱、自主对话、不断学习成长的能…...
【网络基础进阶之路】基于MGRE多点协议的实战详解
PS:本要求基于华为的eNSP模拟软件进行 具体要求: 完成步骤: 1、根据上述要求,对各路由器进行地址安排,如下图。 2、进入各路由器,对每个端口进行地址设置。 R1路由器设置: ISP路由器设置&…...
Spark、RDD、Hive 、Hadoop-Hive 和传统关系型数据库区别
Hive Hadoop Hive 和传统关系型数据库区别 Spark 概念 基于内存的分布式计算框架 只负责算 不负责存 spark 在离线计算 功能上 类似于mapreduce的作用 MapReduce的缺点 运行速度慢 (没有充分利用内存)接口比较简单,仅支持Map Reduce功能…...
[运维]python 启用http 文件服务
要在Python中启用HTTP文件服务,您可以使用内置的http.server模块(在Python 3中)或SimpleHTTPServer模块(在Python 2中)。 在Python 3中: python -m http.server在Python 2中: python -m Simp…...
electron-builder 打包 exe 异常错误集锦
项目技术 vue-electron vue-router vuex vuex-electron element-ui echarts mysql 打包异常 Error: Unresolved node modules: vue Error: Unresolved node modules: vue at D:\Code\Demo\Vue\Voice\App\node_modules\_app-builder-lib20.44.4app-builder-lib\src\…...
14-5_Qt 5.9 C++开发指南_基于HTTP 协议的网络应用程序
文章目录 1. 实现高层网络操作的类2. 基于HTTP协议的网络文件下载3.源码3.1 可是化UI设计3.2 mainwindow.h3.3 mainwindow.cpp 1. 实现高层网络操作的类 Qt 网络模块提供一些类实现 OSI 7 层网络模型中高层的网络协议,如 HTTP、FTP、SNMP等,这些类主要是…...
Kotlin委托
委托 委托 代理 方法内的成员永远拿不到thisRef:官方委托和自定义委托-》方法里面没办法使用反射 委托只能类委托和属性委托 Kotlin委托 本文链接:https://blog.csdn.net/feather_wch/article/details/132095759 类委托 1、类委托 委托的是接口的方…...
分布式协议与算法——CAP理论、ACID理论、BASE理论
CAP理论 CAP理论,对分布式系统的特性做了高度抽象,比如抽象成了一致性、可用性和分区容错性,并对特性间的冲突(也就是CAP不可能三角)做了总结。 CAP三指标 CAP理论对分布式系统的特性做了高度抽象,形成了…...
若依ruoyi框架单点登录实战:从零到一接入统一认证系统
1. 业务场景与需求分析 在企业级应用开发中,多系统间的身份认证一直是痛点。想象一下,员工每天要在OA、CRM、ERP等不同系统间反复登录,既影响效率又增加密码管理负担。这就是统一认证系统(单点登录)要解决的核心问题—…...
一、FunctionCalling——大模型的外部能力接口,实现工具调用与任务执行
Function Calling(函数调用)是LLM 工程化、AI 智能体的核心基石。 如果大模型是大脑,那 Function Calling 就是让大脑「指挥手脚干活」的标准协议——它规定了大模型如何描述工具、如何输出调用指令、程序如何执行、如何回传结果。一、Functi…...
从JDK 8到JDK 17:实战复盘,企业升级必看(AI Agent时代加速跃迁)
开篇引言 “你发任你发,我用Java 8”,这句调侃道尽了JDK 8在企业级开发的统治地位。凭借Lambda、Stream、全新时间API等特性,JDK 8稳坐近十年主流LTS版本宝座。但随着AI Agent大规模落地、云原生架构普及、新一代框架强制迭代,JD…...
Bilibili-Evolved:重新定义你的B站浏览体验
Bilibili-Evolved:重新定义你的B站浏览体验 【免费下载链接】Bilibili-Evolved 强大的哔哩哔哩增强脚本 项目地址: https://gitcode.com/gh_mirrors/bi/Bilibili-Evolved 你是否曾想过,为什么每次打开B站都要面对千篇一律的界面?为什么…...
3 分钟搞定答辩 PPT!PaperXie AI:本科生的学术汇报「开挂」神器
paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AIPPThttps://www.paperxie.cn/ppt/createhttps://www.paperxie.cn/ppt/create 一、 答辩 PPT 的「血泪史」:你是不是也卡在这一步? 毕业论文写到定稿,以为能松口气&…...
Kandinsky-5.0-I2V-Lite-5s开源大模型应用:新闻配图→事件动态还原短视频
Kandinsky-5.0-I2V-Lite-5s开源大模型应用:新闻配图→事件动态还原短视频 1. 从静态到动态的新闻革命 想象一下这样的场景:当你看到一则突发新闻的配图时,不仅能了解事件的基本情况,还能通过短短5秒的视频动态还原关键瞬间。这正…...
Spring Boot 4.0正式版GA后72小时内,头部云厂商紧急下架3款旧Agent插件——你的生产集群是否仍在使用已被标记为EOL的Instrumentation库?
第一章:Spring Boot 4.0 Agent-Ready 架构演进与EOL危机全景Spring Boot 4.0 并非官方已发布版本,而是社区与企业级监控、可观测性厂商围绕 Java Agent 深度集成所推动的架构预演范式。其核心驱动力源于 Spring Boot 3.x 的 Jakarta EE 9 迁移完成、Graa…...
3步打造高效多平台直播:OBS Multi RTMP插件完整解决方案
3步打造高效多平台直播:OBS Multi RTMP插件完整解决方案 【免费下载链接】obs-multi-rtmp OBS複数サイト同時配信プラグイン 项目地址: https://gitcode.com/gh_mirrors/ob/obs-multi-rtmp 想要突破单一平台限制,实现多平台同步直播却苦于操作复杂…...
3D-Speaker说话人日志技术详解:多模块集成解决方案
3D-Speaker说话人日志技术详解:多模块集成解决方案 【免费下载链接】3D-Speaker A Repository for Single- and Multi-modal Speaker Verification, Speaker Recognition and Speaker Diarization 项目地址: https://gitcode.com/gh_mirrors/3d/3D-Speaker 3…...
LumiPixel Canvas Quest光影魔法:不同光照条件下的人像生成效果
LumiPixel Canvas Quest光影魔法:不同光照条件下的人像生成效果 1. 光影的魅力:用光绘画的艺术 摄影圈有句老话:"摄影是用光的艺术"。这句话在AI生成领域同样适用。LumiPixel Canvas Quest通过精准的光照控制,让创作者…...
