小伙伴们好呀~ 今天来和大家分享下这个 Spring事件机制
这个熟悉 观察者模式 的小伙伴应该一眼就看出来啦~
其实就是个简单版的 发布-订阅模式
有三个核心类?
ApplicationEvent
ApplicationEventPublisher
ApplicationListener
用途?
事件发布器发布事件,监听器监听到对应的事件后做出相应的反应~
因为需求也不确定 ?
场景
领导:想在用户操作完后发个邮件通知下A
我:好的
几天后……
领导:算了,先站内提醒就好了,后面再考虑发短信通知啥的,看看哪个效果好点
我:……好的
一开始我也没用这个事件机制的,没多想就写一起了
后面觉得有点不对劲,才想起来用这招的?
优点?
提醒
体量小的系统还可以用,大点的还是直接用消息中间件去解决靠谱
根据小伙伴反馈事件去发送短信和邮件
一. 小伙伴反馈事件 ReaderFeedbackEvent
特点和作用?
继承
ApplicationEvent
,保存反馈信息的DTO
二. 事件发布器 ReaderFeedbackEventPublisher
特点和作用?
实现
ApplicationEventPublisherAware
这个接口,获取ApplicationEventPublisher
事件发布器去发布事件
三. 监听 ReaderFeedbackEvent
事件并发送邮件
特点和作用?
实现
ApplicationListener
这个接口,获取事件中的反馈信息,并发送邮件
四. 当反馈信息有点赞时才发送短信通知?
特点和作用?
监听器的第二种写法—— 注解 ,比较方便,这里监听并判断是不是点赞,再去发送短信?
这里直接在 IDEA
中进行测试,
效果如下?
like = false
like = true
收到的短信
可以看到功能模块很简单,监听反馈事件,然后去发送短信和邮件~
这部分代码上传到我的
GitHub
仓库啦 (地址在文末),有兴趣的小伙伴可以去看看, 喜欢的话顺手给个star
呀,感谢!?
这里我们打个断点,就可以轻易的来到这里啦 ?
这个方法在事件多播器 SimpleApplicationEventMulticaster
中,可以看到当有配置这个线程池时,是走异步通知路线的
可以看到就这简单3步 ,最后就是回到我们的 onApplicationEvent
方法中去处理的
invokeListener
——> doInvokeListener
——> onApplicationEvent
活学活用,快去试试叭!?
项目地址?: https://github.com/Java4ye/springboot-demo-4ye
喜欢的话,麻烦点个小星星呀???
本期思维导图如下?
别忘了点赞收藏关注哦~
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。