• 3 分钟快速上手 Spring 事件机制


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

    内容概览

     

    原理

    .

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

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

    有三个核心类👇

    1. 事件 ApplicationEvent

    2. 事件发布器 ApplicationEventPublisher

    3. 事件监听器 ApplicationListener

    用途👇

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

    为什么使用

    因为需求也不确定 🙄

    场景

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

    我:好的

    几天后……

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

    我:……好的

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

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

    优点👇

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

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

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

    提醒

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

    项目实战

    image-20210829102043376

    功能

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

    主要源码

    一. 小伙伴反馈事件 ReaderFeedbackEvent

     

    特点和作用👇

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

    二. 事件发布器 ReaderFeedbackEventPublisher

     

    特点和作用👇

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

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

     

    特点和作用👇

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

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

     

    特点和作用👇

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

    测试

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

     

    效果如下👇

    like = false

     

    like = true

     

    收到的短信

     

    小结

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

     

    Spring源码解读

    异步/同步

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

     

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

    那怎么调用监听器的呢?

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

    invokeListener ——> doInvokeListener ——> onApplicationEvent

     

    最后

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

    本期思维导图如下👇

  • 相关阅读:
    29-移动端开发
    某公司前端笔试题(12.30)
    SpringCloud:自定义skywalking链路追踪
    面试中的MySQL主从复制|手撕MySQL|对线面试官
    常见仿射变换矩阵
    使用百度智能云api进行图片识别文字以及pdf识别文字
    leetCode 70.爬楼梯 动态规划
    Android控件全解手册 - RadioGroup、RadioButton和FloatingActionButton全解
    程序员兼职那些事儿
    使用KiCad插件,将PCB焊接可视化
  • 原文地址:https://blog.csdn.net/uuqaz/article/details/126101117