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

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

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

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

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

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

扩展

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/334044.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

方案解决:5G基站节能及数字化管理

截至2023年10月,我国5G基站总数达321.5万个,占全国通信基站总数的28.1%。然而,随着5G基站数量的快速增长,基站的能耗问题也逐渐日益凸显,基站的用电给运营商带来了巨大的电费开支压力,降低5G基站的能耗成为…

递归、搜索与回溯算法(专题六:记忆化搜索)

目录 1. 什么是记忆化搜索(例子:斐波那契数) 1.1 解法一:递归 1.2 解法二:记忆化搜索 1.2.1 记忆化搜索比递归多了什么? 1.2.2 提出一个问题:什么时候要使用记忆化搜索呢? 1.3 …

比吸收率(SAR)

本文旨在介绍比吸收率(Specific Absorption Rate)的基本知识。搬运自https://www.antenna-theory.com。英语够用的朋友可以直接移步。感谢网站创始人Peter Joseph Bevelacqua教授的无私奉献。 ------------------我是分隔线------------------- 比吸收…

视频号的视频怎么下载到手机,视频号下载提取到手机有几个步骤?

要下载视频号的视频并提取到手机,可以按照以下步骤操作,具体一起来看看。 电脑版视频号下载到手机 第一步:找到你心仪的视频号视频在电脑中你也可以通过搜索并找到自己需要的视频并分享给视频下载助手; 第二大步:视频…

C++ 设计模式之备忘录模式

【声明】本题目来源于卡码网(题目页面 (kamacoder.com)) 【提示:如果不想看文字介绍,可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 -- 什么是备忘录模式 (第17种模式) 备忘录模式(Meme…

如何使用万能头 #include<bits/stdc++.h>

准备蓝桥杯的时候看到了很多头文件包含了这个头文件,后来查了一下 它是C中支持的一个几乎万能的头文件,几乎包含所有的可用到的C库函数。以后写代码就可以直接引用这一个头文件了,不需要在写一大堆vector、string、map、stack…… 我们该如何…

zookeeper弱密码漏洞修复

1.连接zookeeper 进入zookeeper安装目录 bin目录下 ./zkCli.sh -server IP:21812.查看节点 ls /3.查看节点权限 getAcl /zookeeper4.设置IP权限 setAcl / ip:127.0.0.1:cdrwa,ip:10.86.30.11:cdrwazookeeper的权限不具备继承性,父子节点的权限相互独立,因此需要为每个子…

论文阅读笔记AI篇 —— Transformer模型理论+实战 (三)

论文阅读笔记AI篇 —— Transformer模型理论实战 (三) 第三遍阅读(精读)3.1 Attention和Self-Attention的区别?3.2 Transformer是如何进行堆叠的?3.3 如何理解Positional Encoding?3.x 文章涉及…

浅析Redis①:命令处理核心源码分析(上)

写在前面 Redis作为我们日常工作中最常使用的缓存数据库,其重要性不言而喻,作为普调开发者,我们在日常开发中使用Redis,主要聚焦于Redis的基层数据结构的命令使用,很少会有人对Redis的内部实现机制进行了解&#xff0c…

龙哥的问题(积性函数,莫比乌斯反演)

题目路径: 221. 龙哥的问题 - AcWing题库 思路:

golang 中使用 statik 将静态资源编译进二进制文件中

现在的很多程序都会提供一个 Dashboard 类似的页面用于查看程序状态并进行一些管理的功能,通常都不会很复杂,但是其中用到的图片和网页的一些静态资源,如果需要用户额外存放在一个目录,也不是很方便,如果能打包进程序发…

《游戏-01_2D-开发》

首先利用安装好的Unity Hub创建一个unity 2D(URP渲染管线)项目 选择个人喜欢的操作格局(这里采用2 by 3) 在Project项目管理中将双栏改为单栏模式(个人喜好) 找到首选项(Preferences&#xff09…

带你学C语言-指针(4)

目录 ​编辑 ⚾0.前言 🏀1.回调函数 ⚽2.qsort 🏉2.1 qsort函数的模拟实现 🎾3.sizeof与strlen对比 🎾4.结束语 ⚾0.前言 言C之言,聊C之识,以C会友,共向远方。各位CSDN的各位你们好啊&…

docker 使用 vcs/2018 Verdi等 eda 软件

好不容易在ubuntu 安装好了eda软件,转眼就发现了自己的无知。 有博主几年前就搞定了docker上的EDA工具。而且更全,更简单。只恨自己太无知啊。 Synopsys EDA Tools docker image - EDA资源使用讨论 - EETOP 创芯网论坛 (原名:电子顶级开发网…

OB OCP工具

文章目录 OCP产品架构OCP核心功能集群管理-集群拓扑图告警管理 OCP OCP(OceanBase Cloud Platform)是企业级数据库管理平台OceanBase 云平台(OceanBase Cloud Platform,OCP)是以 OceanBase 为核心的企业级数据库管理平…

2024年【焊工(初级)】考试总结及焊工(初级)模拟考试

题库来源:安全生产模拟考试一点通公众号小程序 焊工(初级)考试总结是安全生产模拟考试一点通总题库中生成的一套焊工(初级)模拟考试,安全生产模拟考试一点通上焊工(初级)作业手机同…

canvas绘制图形

目录 1、canvas绘制矩形 2、canvas绘制线 3、canvas绘制圆 4、canvas绘制多圈动画圆 HTML5<canvas>元素用于图形的绘制&#xff0c;Canvas API主要聚焦于2D图形。 1、canvas绘制矩形 canvas是一个二维网格&#xff0c;左上角坐标为(0,0)&#xff0c;横轴为x轴&…

Redis实战之-分布式锁

一、基本原理和实现方式对比 分布式锁&#xff1a;满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁&#xff0c;只要大家使用的是同一把锁&#xff0c;那么我们就能锁住线程&#xff0c;不让线程进行&#xff0c;让程序串行…

【jQuery入门】基础使用-入口函数、顶级对象$

文章目录 前言一、基础使用1.1 jQuery的下载1.2 简单的使用 二、顶级对象$总结 前言 jQuery是一款广泛应用于前端开发的JavaScript库&#xff0c;它简化了许多常见任务的操作&#xff0c;使得代码编写更加便捷。本文将介绍jQuery的基础使用&#xff0c;包括入口函数和顶级对象…

SQL注入实战操作

一&#xff1a;SQl注入分类 按照注入的网页功能类型分类&#xff1a; 1、登入注入&#xff1a;表单&#xff0c;如登入表单&#xff0c;注册表单 2、cms注入&#xff1a;CMS逻辑:index.php首页展示内容&#xff0c;具有文章列表(链接具有文章id)、articles.php文 章详细页&a…