前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我攻克的技术难题:三分钟快速上手Spring事件机制

我攻克的技术难题:三分钟快速上手Spring事件机制

原创
作者头像
Java4ye
发布2024-02-09 11:36:14
2170
发布2024-02-09 11:36:14
举报
文章被收录于专栏:Spring家族

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

内容概览

原理

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

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

有三个核心类👇

  1. 事件 ApplicationEvent
  2. 事件发布器 ApplicationEventPublisher
  3. 事件监听器 ApplicationListener

用途👇

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

为什么使用

因为需求也不确定 🙄

场景

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

我:好的

几天后……

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

我:……好的

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

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

优点👇

  1. 解耦 可以将业务代码和发邮件,站内提醒,短信等进行分离
  2. 异步通知 不用等待这些事件的完成
  3. 提高扩展性 后面再扩展其他操作也方便多啦

提醒

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

项目实战

功能

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

主要源码

一. 小伙伴反馈事件 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

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

本期思维导图如下👇

别忘了点赞收藏关注哦~

我正在参与2024腾讯技术创作特训营第五期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 内容概览
  • 原理
  • 为什么使用
  • 项目实战
    • 功能
      • 主要源码
        • 测试
          • 小结
          • Spring源码解读
            • 异步/同步
              • 那怎么调用监听器的呢?
              • 总结
              相关产品与服务
              短信
              腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档