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


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



目录
相关文章
|
人工智能 JSON 安全
Spring Boot实现无感刷新Token机制
本文深入解析在Spring Boot项目中实现JWT无感刷新Token的机制,涵盖双Token策略、Refresh Token安全性及具体示例代码,帮助开发者提升用户体验与系统安全性。
1242 4
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
557 2
|
11月前
|
JSON 前端开发 Java
Spring MVC 核心组件与请求处理机制详解
本文解析了 Spring MVC 的核心组件及请求流程,核心组件包括 DispatcherServlet(中央调度)、HandlerMapping(URL 匹配处理器)、HandlerAdapter(执行处理器)、Handler(业务方法)、ViewResolver(视图解析),其中仅 Handler 需开发者实现。 详细描述了请求执行的 7 步流程:请求到达 DispatcherServlet 后,经映射器、适配器找到并执行处理器,再通过视图解析器渲染视图(前后端分离下视图解析可省略)。 介绍了拦截器的使用(实现 HandlerInterceptor 接口 + 配置类)及与过滤器的区别
1150 0
|
XML Java Maven
Spring 手动实现Spring底层机制
Spring 第六节 手动实现Spring底层机制 万字详解!
599 32
|
Java Spring
Java Spring Boot监听事件和处理事件
通过上述步骤,我们可以在Java Spring Boot应用中实现事件的发布和监听。事件驱动模型可以帮助我们实现组件间的松耦合,提升系统的可维护性和可扩展性。无论是处理业务逻辑还是系统事件,Spring Boot的事件机制都提供了强大的支持和灵活性。希望本文能为您的开发工作提供实用的指导和帮助。
647 15
|
NoSQL Java Redis
Spring Boot 自动配置机制:从原理到自定义
Spring Boot 的自动配置机制通过 `spring.factories` 文件和 `@EnableAutoConfiguration` 注解,根据类路径中的依赖和条件注解自动配置所需的 Bean,大大简化了开发过程。本文深入探讨了自动配置的原理、条件化配置、自定义自动配置以及实际应用案例,帮助开发者更好地理解和利用这一强大特性。
2497 15
|
缓存 Java 数据库连接
Spring框架中的事件机制:深入理解与实践
Spring框架是一个广泛使用的Java企业级应用框架,提供了依赖注入、面向切面编程(AOP)、事务管理、Web应用程序开发等一系列功能。在Spring框架中,事件机制是一种重要的通信方式,它允许不同组件之间进行松耦合的通信,提高了应用程序的可维护性和可扩展性。本文将深入探讨Spring框架中的事件机制,包括不同类型的事件、底层原理、应用实践以及优缺点。
497 8
|
Java 开发者 Spring
深入解析:Spring AOP的底层实现机制
在现代软件开发中,Spring框架的AOP(面向切面编程)功能因其能够有效分离横切关注点(如日志记录、事务管理等)而备受青睐。本文将深入探讨Spring AOP的底层原理,揭示其如何通过动态代理技术实现方法的增强。
714 8
|
缓存 Java 数据库连接
深入探讨:Spring与MyBatis中的连接池与缓存机制
Spring 与 MyBatis 提供了强大的连接池和缓存机制,通过合理配置和使用这些机制,可以显著提升应用的性能和可扩展性。连接池通过复用数据库连接减少了连接创建和销毁的开销,而 MyBatis 的一级缓存和二级缓存则通过缓存查询结果减少了数据库访问次数。在实际应用中,结合具体的业务需求和系统架构,优化连接池和缓存的配置,是提升系统性能的重要手段。
594 4
|
Java Spring 供应链
Spring 框架事件发布与监听机制,如魔法风暴席卷软件世界,开启奇幻编程之旅!
【8月更文挑战第31天】《Spring框架中的事件发布与监听机制》介绍了Spring中如何利用事件发布与监听机制实现组件间的高效协作。这一机制像城市中的广播系统,事件发布者发送消息,监听器接收并响应。通过简单的示例代码,文章详细讲解了如何定义事件类、创建事件发布者与监听器,并确保组件间松散耦合,提升系统的可维护性和扩展性。掌握这一机制,如同拥有一把开启高效软件开发大门的钥匙。
186 1