三分钟快速上手Spring事件机制

简介: 三分钟快速上手Spring事件机制小伙伴们好呀~ 今天来和大家分享下这个 Spring事件机制内容概览image-20210829132019387原理image-20210828184103069这个熟悉 观察者模式 的小伙伴应该一眼就看出来啦~其实就是个简单版的 发布-订阅模式有三个核心类👇事件 ApplicationEvent事件发布器 ApplicationEventPublisher事件监听器 ApplicationListener用途👇事件发布器发布事件,监听器监听到对应的事件后做出相应的反应~为什么使用因为需求也不确定 🙄场

网络异常,图片无法展示
|


小伙伴们好呀~ 今天来和大家分享下这个 Spring事件机制


内容概览


网络异常,图片无法展示
|

原理


网络异常,图片无法展示
|


这个熟悉 观察者模式 的小伙伴应该一眼就看出来啦~


其实就是个简单版的 发布-订阅模式


有三个核心类👇


  1. 事件ApplicationEvent


  1. 事件发布器ApplicationEventPublisher


  1. 事件监听器ApplicationListener


用途👇


事件发布器发布事件,监听器监听到对应的事件后做出相应的反应~


为什么使用


因为需求也不确定 🙄


场景


领导:想在用户操作完后发个邮件通知下A


我:好的


几天后……


领导:算了,先站内提醒就好了,后面再考虑发短信通知啥的,看看哪个效果好点


我:……好的


一开始我也没用这个事件机制的,没多想就写一起了


后面觉得有点不对劲,才想起来用这招的😄


优点👇


  1. 解耦 可以将业务代码和发邮件,站内提醒,短信等进行分离


  1. 异步通知 不用等待这些事件的完成


  1. 提高扩展性 后面再扩展其他操作也方便多啦


提醒


体量小的系统还可以用,大点的还是直接用消息中间件去解决靠谱


项目实战


网络异常,图片无法展示
|


功能


根据小伙伴反馈事件去发送短信和邮件


主要源码


一. 小伙伴反馈事件 ReaderFeedbackEvent


网络异常,图片无法展示
|


特点和作用👇


继承 ApplicationEvent ,保存反馈信息的DTO


二. 事件发布器 ReaderFeedbackEventPublisher


网络异常,图片无法展示
|


特点和作用👇


实现 ApplicationEventPublisherAware 这个接口,获取

ApplicationEventPublisher 事件发布器去发布事件


三. 监听 ReaderFeedbackEvent 事件并发送邮件


网络异常,图片无法展示
|


特点和作用👇


实现 ApplicationListener 这个接口,获取事件中的反馈信息,并发送邮件


四. 当反馈信息有点赞时才发送短信通知😄


网络异常,图片无法展示
|


特点和作用👇


监听器的第二种写法—— 注解 ,比较方便,这里监听并判断是不是点赞,再去发送短信😝


测试


这里直接在 IDEA 中进行测试,


网络异常,图片无法展示
|


效果如下👇


like = false


网络异常,图片无法展示
|
网络异常,图片无法展示
|




小结


可以看到功能模块很简单,监听反馈事件,然后去发送短信和邮件~

网络异常,图片无法展示
|


这部分代码上传到我的 GitHub 仓库啦 (地址在文末),有兴趣的小伙伴可以去看看, 喜欢的话顺手给个 star 呀,感谢!😝


Spring源码解读


异步/同步


这里我们打个断点,就可以轻易的来到这里啦 👇


网络异常,图片无法展示
|


这个方法在事件多播器SimpleApplicationEventMulticaster 中,可以看到当有配置这个线程池时,是走异步通知路线的


那怎么调用监听器的呢?


可以看到就这简单3步 ,最后就是回到我们的 onApplicationEvent 方法中去处理的

invokeListener ——> doInvokeListener ——> onApplicationEvent


网络异常,图片无法展示
|



目录
相关文章
|
1月前
|
存储 安全 Java
事件的力量:探索Spring框架中的事件处理机制
事件的力量:探索Spring框架中的事件处理机制
28 0
|
2月前
|
设计模式 前端开发 Java
【深入浅出Spring原理及实战】「夯实基础系列」360全方位渗透和探究SpringMVC的核心原理和运作机制(总体框架原理篇)
【深入浅出Spring原理及实战】「夯实基础系列」360全方位渗透和探究SpringMVC的核心原理和运作机制(总体框架原理篇)
34 0
|
2月前
|
Java 开发者 UED
Spring Boot的全局异常处理机制
【2月更文挑战第13天】
70 0
|
3月前
|
XML Java 数据格式
编织Spring魔法:解读核心容器中的Beans机制【beans 一】
编织Spring魔法:解读核心容器中的Beans机制【beans 一】
48 0
|
2月前
|
人工智能 JSON 前端开发
【Spring boot实战】Springboot+对话ai模型整体框架+高并发线程机制处理优化+提示词工程效果展示(按照框架自己修改可对接市面上百分之99的模型)
【Spring boot实战】Springboot+对话ai模型整体框架+高并发线程机制处理优化+提示词工程效果展示(按照框架自己修改可对接市面上百分之99的模型)
|
4月前
|
XML Java 数据格式
聊聊Spring事件及其应用
在 JDK 中已经提供相应的自定义事件发布功能的基础类: - `java.util.EventObject`类 :自定义**事件**类型 - `java.util.EventListener`接口:事件的**监听器**
32 1
聊聊Spring事件及其应用
|
5月前
|
Java 数据库 Spring
Spring 声明式事务机制
Spring 声明式事务机制
32 0
|
11天前
|
Java 测试技术 开发者
Spring IoC容器通过依赖注入机制实现控制反转
【4月更文挑战第30天】Spring IoC容器通过依赖注入机制实现控制反转
21 0
|
9天前
|
缓存 NoSQL Java
17:缓存机制-Java Spring
17:缓存机制-Java Spring
22 5
|
12天前
|
安全 Java 测试技术
利用Java反射机制提高Spring Boot的代码质量:概念与实战
【4月更文挑战第29天】Java反射机制提供了一种强大的方法来在运行时检查或修改类和对象的行为。在Spring Boot应用中,合理利用反射可以提高代码的灵活性和可维护性。本篇博客将探讨Java反射的核心概念,并展示如何通过反射提高Spring Boot项目的代码质量。
28 0