千家信息网

Spring架构揭秘-事件监听机制

发表于:2025-02-07 作者:千家信息网编辑
千家信息网最后更新 2025年02月07日,一、事件监听机制概述二、事件监听机制结构三、Spring监听机制架构Spring的Application拥有发布事件并且注册事件监听器的能力,拥有一套完整的事件发布和监听机制。在Java中,通过jav
千家信息网最后更新 2025年02月07日Spring架构揭秘-事件监听机制

一、事件监听机制概述

二、事件监听机制结构

三、Spring监听机制架构

Spring的Application拥有发布事件并且注册事件监听器的能力,拥有一套完整的事件发布和监听机制。在Java中,通过java.util. EventObject来描述事件,通过java.util. EventListener来描述事件监听器,在众多的框架和组件中,建立一套事件机制通常是基于这两个接口来进行扩展。

在一个事件体系中,有以下几个重要的概念。

1、事件源:事件对象的产生者,任何一个EventObject都有一个来源

2、事件监听器注册表:当事件框架或组件收到一个事件后,需要通知所有相关的事件监听器来进行处理,这个时候就需要有个存储监听器的地方,也就是事件监听器注册表。

3、事件广播器:事件广播器在整个事件机制中扮演一个中介的角色,当事件发布者发布一个事件后,就需要通过广播器来通知所有相关的监听器对该事件进行处理。

下图就是事件机制的结构图下载

Spring事件发布机制

在Spring中,事件机制大概也是这么个结构,具体的实现采用观察者模式。下面我们来看看Spring的事件机制设计类图下载

1、ApplicationEventPublisher是Spring的事件发布接口,事件源通过该接口的pulishEvent方法发布事件。

2、ApplicationEventMulticaster就是Spring事件机制中的事件广播器,它默认提供一个SimpleApplicationEventMulticaster实现,如果用户没有自定义广播器,则使用默认的。它通过父类AbstractApplicationEventMulticaster的getApplicationListeners方法从事件注册表中获取事件监听器,并且通过invokeListener方法执行监听器的具体逻辑

3、ApplicationListener就是Spring的事件监听器接口,所有的监听器都实现该接口,本图中列出了典型的几个子类。其中RestartApplicationListnener在SpringBoot的启动框架中就有使用下载

4、在Spring中通常是ApplicationContext本身担任监听器注册表的角色,在其子类AbstractApplicationContext中就聚合了事件广播器ApplicationEventMulticaster和事件监听器ApplicationListnener,并且提供注册监听器的addApplicationListnener方法。

通过上图就能较清晰的知道当一个事件源产生事件时,它通过事件发布器ApplicationEventPublisher发布事件,然后事件广播器ApplicationEventMulticaster会去事件注册表ApplicationContext中找到事件监听器ApplicationListnener,并且逐个执行监听器的onApplicationEvent方法,从而完成事件监听器的逻辑。


事件 监听 监听器 机制 广播 接口 方法 注册表 就是 框架 结构 组件 角色 逻辑 处理 架构 重要 上图 下图 两个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 搜索网络安全教育手抄报 江阴互联网智能科技产品多少钱 软件开发所需要学的软件 广东网络技术转让目的 重庆市网络安全国家队伍 贵池区常规软件开发服务销售厂 安川服务器A10故障报警 大专读计算机网络技术是学什么 建立 软件开发库 沈阳软件开发工程师平均薪资 在云服务器上安装系统 在哪里可以找到并购数据库 重庆电信dns服务器是什么 福建定制软件开发 七日杀连接不了朋友服务器 服务器托管机房电源标准 编写软件提供数据库查询功能源码 中国工商银行软件开发中心视频 广州python软件开发 企业服务器登录超时 车载网络技术发展前景 南为网络技术有限公司怎么样 具备软件开发能力的公司很少 数据库 between 网络安全是哪天实施 广东人保企业微信开发软件开发 广州信息软件开发费用是多少 dayz 服务器添加管理 深圳市易游网络技术开发公司 服务器管理口带外管理怎么弄
0