首页>>后端>>Spring->三分钟快速上手Spring事件机制

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

时间:2023-11-30 本站 点击:0

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

内容概览

原理

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

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

有三个核心类?

事件 ApplicationEvent

事件发布器 ApplicationEventPublisher

事件监听器 ApplicationListener

用途?

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

为什么使用

因为需求也不确定 ?

场景

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

我:好的

几天后……

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

我:……好的

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

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

优点?

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

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

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

提醒

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

项目实战

功能

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

主要源码

一. 小伙伴反馈事件 ReaderFeedbackEvent

特点和作用?

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

二. 事件发布器 ReaderFeedbackEventPublisher

特点和作用?

实现 ApplicationEventPublisherAware 这个接口,获取 ApplicationEventPublisher 事件发布器去发布事件

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

特点和作用?

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

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

特点和作用?

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

测试

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

效果如下?

like = false

like = true

收到的短信

小结

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

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

Spring源码解读

异步/同步

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

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

那怎么调用监听器的呢?

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

invokeListener ——> doInvokeListener ——> onApplicationEvent

总结

活学活用,快去试试叭!?

项目地址?: https://github.com/Java4ye/springboot-demo-4ye

喜欢的话,麻烦点个小星星呀⭐⭐?

本期思维导图如下?

ps:最近忙起来啦,更文速度会慢一些哦~ ?

喜欢的话关注公众号 Java4ye 支持下 4ye 呀?,这样就可以第一时间收到更文消息啦!


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