三分钟快速上手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


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



目录
相关文章
|
6月前
|
存储 安全 Java
事件的力量:探索Spring框架中的事件处理机制
事件的力量:探索Spring框架中的事件处理机制
74 0
|
6月前
|
设计模式 前端开发 Java
【深入浅出Spring原理及实战】「夯实基础系列」360全方位渗透和探究SpringMVC的核心原理和运作机制(总体框架原理篇)
【深入浅出Spring原理及实战】「夯实基础系列」360全方位渗透和探究SpringMVC的核心原理和运作机制(总体框架原理篇)
69 0
|
3天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
16 2
|
6月前
|
Java 测试技术 开发者
Spring IoC容器通过依赖注入机制实现控制反转
【4月更文挑战第30天】Spring IoC容器通过依赖注入机制实现控制反转
61 0
|
3月前
|
Java 开发工具 Spring
Spring的Factories机制介绍
Spring的Factories机制介绍
69 1
|
3月前
|
Java Spring 供应链
Spring 框架事件发布与监听机制,如魔法风暴席卷软件世界,开启奇幻编程之旅!
【8月更文挑战第31天】《Spring框架中的事件发布与监听机制》介绍了Spring中如何利用事件发布与监听机制实现组件间的高效协作。这一机制像城市中的广播系统,事件发布者发送消息,监听器接收并响应。通过简单的示例代码,文章详细讲解了如何定义事件类、创建事件发布者与监听器,并确保组件间松散耦合,提升系统的可维护性和扩展性。掌握这一机制,如同拥有一把开启高效软件开发大门的钥匙。
47 0
|
4月前
|
安全 Java API
构建基于Spring Boot的REST API安全机制
构建基于Spring Boot的REST API安全机制
|
4月前
|
存储 设计模式 Java
Spring Boot中的事件溯源模式
Spring Boot中的事件溯源模式
|
5月前
|
Java 应用服务中间件 Spring
解析Spring Boot自动装配的原理与机制
解析Spring Boot自动装配的原理与机制
114 4
|
4月前
|
Java Spring
解析Spring Boot中的事务管理机制
解析Spring Boot中的事务管理机制