当前位置: 首页 > news >正文

64.Spring事件监听的核心机制是什么?

Spring事件监听的核心机制是什么?

spring的事件监听有三个部分组成

  • 事件(ApplicationEvent) 负责对应相应监听器 事件源发生某事件是特定事件监听器被触发的原因
  • 监听器(ApplicationListener) 对应于观察者模式中的观察者。监听器监听特定事件,并在内部定义了事件发生后的响应逻辑
  • 事件发布器(ApplicationEventMulticaster )对应于观察者模式中的被观察者/主题, 负责通知观察者 对外提供发布事件和增删事件监听器的接口,维护事件和事件监听器之间的映射关系,并在事件发生时负责通知相关监听器。

Spring事件机制是观察者模式的一种实现,但是除了发布者和监听者者两个角色之外,还有一个EventMultiCaster的角
色负责把事件转发给监听者,工作流程如下:
在这里插入图片描述

也就是说上面代码中发布者调用applicationEventPublisher.publishEvent(msg); 是会将事件发送给了EventMultiCaster, 而后由
EventMultiCaster注册着所有的Listener,然后根据事件类型决定转发给那个Listener

扩展

Spring 的监听机制是非常优秀的思想,它能够很好地实现代码解耦,将业务逻辑与非业务逻辑分离,让程序变得更加灵活和可维护。在业务开发中,我们

相关文章:

  • Qt简单使用与初识
  • DBA技术栈MongoDB:简介
  • 【STM32】STM32学习笔记-I2C通信外设(34)
  • 近场与远场
  • henauOJ 1113: 计算x的n次方
  • MySQL窗口函数(MySQL Window Functions)
  • 安全运维:cmd命令大全(108个)
  • 【论文阅读】ControlNet、文章作者 github 上的 discussions
  • ChatGPT 如何解决 “Something went wrong. lf this issue persists ….” 错误
  • 驾驭车联网的力量:深入车联网网络架构
  • windows系统中,通过LOAD到入csv格式的文件到neo4j中,如何写文件路径
  • Python自动化我选DrissionPage,弃用Selenium
  • beego的模块篇 - I18n国际化
  • MFC 序列化机制
  • el-table样式错乱解决方案
  • 【5+】跨webview多页面 触发事件(二)
  • 【Amaple教程】5. 插件
  • 【css3】浏览器内核及其兼容性
  • Android组件 - 收藏集 - 掘金
  • JavaScript-Array类型
  • MySQL的数据类型
  • OSS Web直传 (文件图片)
  • react-native 安卓真机环境搭建
  • tab.js分享及浏览器兼容性问题汇总
  • uni-app项目数字滚动
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 理清楚Vue的结构
  • 使用Gradle第一次构建Java程序
  • 小程序01:wepy框架整合iview webapp UI
  • 学习使用ExpressJS 4.0中的新Router
  • 用Visual Studio开发以太坊智能合约
  • 在Unity中实现一个简单的消息管理器
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • puppet连载22:define用法
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #单片机(TB6600驱动42步进电机)
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • ( 10 )MySQL中的外键
  • (9)目标检测_SSD的原理
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (day 12)JavaScript学习笔记(数组3)
  • (Java)【深基9.例1】选举学生会
  • (Oracle)SQL优化技巧(一):分页查询
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (剑指Offer)面试题34:丑数
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (十三)Java springcloud B2B2C o2o多用户商城 springcloud架构 - SSO单点登录之OAuth2.0 根据token获取用户信息(4)...
  • (未解决)jmeter报错之“请在微信客户端打开链接”
  • (一)Java算法:二分查找
  • (原)Matlab的svmtrain和svmclassify