Spring事件监听机制

AWS-解析mysql binlog同步数据方案 虽然是公有云的鼻祖,AWS在某些产品的实现却太不给力;可能是习惯了阿里云喂到嘴边的感觉,AWS很多方案需要自己折腾,蛋疼!比如这里要讲的mysql数据同步方案。 阿里云产品DTS,点几下就OK了,AWS,只能通过插件安装、配置、调试、蹚坑……,具体就是用msk的debezium插件连接器。没见识过的一脸懵逼,下面说下配置步骤和一些注意的坑。 阅读详情

1、什么是Spring事件监听机制

        Spring 的事件(Application Event)为 Bean 与 Bean 之间的消息通信提供了支持。当一个 Bean 处理完一个任务之后,希望另一个 Bean 知道并能做相应的处理,这时我们就需要让另一个 Bean 监听当前 Bean 所发送的消息。(观察者模式)

(1)事件监听机制的主要角色关系

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

(2)Spring 事件的应用场景

         是一种常见的发布-订阅模型,主要用于消息通讯等方面的应用

 

2、Spring事件应用流程

(1)自定义事件,必须继承ApplicationEvent,实现构造方法。(消息封装推送)


public class UserEvent extends ApplicationEvent {
    private BaseBean baseBean;
 
    /**
     * 重写构造函数
     * @param source 发生事件的对象
     */
    public UserEvent(Object source, BaseBean baseBean) {
        super(source);
        this.baseBean = baseBean;
    }
 
    public BaseBean getBaseBean() {
        return baseBean;
    }
 
    public void setBaseBean(BaseBean baseBean) {
        this.baseBean = baseBean;
    }
}

(2)事件监听器,监听方法的实现可以使用注解,也可以实现接口ApplicationListener,并包含具体要触发的业务逻辑需求

//使用注解编写
@Component
public class UserBeanListener {
 
    /**
     * 监听实现方法
     * @param event 监听事件
     */
    @EventListener
    public void register(UserEvent event) {
        //引发需要执行的业务逻辑代码
        System.out.println("UserBeanListener: " + event.getBaseBean().getName());
    }
}


/**
 * 自定义监听器(继承关系定义)
 * @author sxq
 * @time 2018年8月31日 上午10:27:04
 *
 */
@Component
public class UserBeanListener implements ApplicationListener<UserEvent>{
 
    @Override
    public void onApplicationEvent(UserEvent event) {
         
        System.out.println(event.getNotify().toString());
         
        //监听事件后,处理后续事情
    }
 
}

(3)使用容器发布事件(事件源)

@Service
public class RegisterService {
 
    @Autowired
    private ApplicationContext applicationContext;
 
    public void register() {
        /*
         * 这里的UserA 和 UserB 都是BaseBean的子类
         */
        //事件源,由该业务功能的推动,触发后面的事件的封装推送--事件的发布--事件的执行
        UserA a = new UserA();
        a.setName("a");
        UserB b = new UserB();
        b.setName("b");
        //实例化事件
        UserEvent userEventA new UserEvent(this, a);
        // 发布事件  UserEvent
        applicationContext.publishEvent(userEventA);
        // 发布事件  UserEvent
        applicationContext.publishEvent(new UserEvent(this, b));
 }

总结:
1.首先事件的发布与监听是一个同步的过程,就像上面代码中先发布了UserA的事件,一定会等到UserA的事件监听器的业务逻辑执行完(即UserBeanListener的register方法执行完),再发布UserB的事件。如果想让事件的监听器实现异步处理,可以在使用@Async注解(放在UserBeanListener的register上)。

3.事件与监听器的配对是通过事件的类型与监听器方法中的参数类型确定的。
 

 

 

 

【WRF模拟】如何查看 WPS 的输入静态地理数据(二进制格式)? 如何查看 WPS 的输入静态地理数据(二进制格式)? 阅读详情

相关推荐

Mac新手必看:用Homebrew安装wget的保姆级教程,附常见报错一键修复

本文为Mac新手提供使用Homebrew安装wget的详细教程,涵盖从Homebrew安装到wget基础使用的全流程,并附常见报错一键修复方案。通过本指南,用户可轻松掌握命令行下载工具wget的安装与使用技巧,解决Mac环境下资源下载的各种问题。

weixin_30635053的博客 367

Spring 中的事件监听机制

ApplicationContext 中的事件处理是通过ApplicationEvent 类和ApplicationListener 接口实现的。如果一个 Bean(监听器实例)实现了ApplicationListener 接口,并被部署到 Spring 容器中,那么每次在容器中发布一个ApplicationEvent 事件,该 Bean (监听器实例)都会被通知到。本质上,这种机制就是一个观察者的设计模式。

swadian2008的博客 5762

STM32F103C8T6 Bootloader开发实战:串口IAP固件升级与Keil工程配置详解

本文详细介绍了STM32F103C8T6 Bootloader开发实战,重点讲解串口IAP固件升级的实现方法与Keil uVision5工程配置。通过Flash分区管理、USART1通信协议设计及应用程序跳转机制等核心技术,帮助开发者掌握嵌入式系统固件升级方案,提升设备维护效率。

weixin_29165725的博客 437

Spring的监听机制详解

假设我们正在开发一个在线商城应用程序,我们需要在用户下单时发送一个通知邮件给商家。为了实现这个功能,我们可以使用自定义事件来触发邮件发送操作。首先,我们需要定义一个名为OrderPlacedEvent的自定义事件,用于表示用户下单的事件。import org} }} }在上述代码中,我们定义了一个名为OrderPlacedEvent的自定义事件,并通过实现构造函数和getOrder()方法来传递订单参数和获取订单参数。

yinying293的博客 2115

【MFRC522】STM32与MFRC522的SPI通信优化及常见问题解析

本文深入解析了STM32与MFRC522进行SPI通信的优化方法与常见问题。从基础的硬件连接到SPI时序优化,再到关键的寄存器配置(如RFCfgReg设为0x4F以提升读卡稳定性),文章提供了详细的调试技巧和实战排坑指南,帮助开发者实现稳定高效的IC读卡应用。

yhn45678901的博客 841

PCB过孔电流承载解析:完整指南与数据参考

深入解析PCB过孔的电流承载能力,结合实际应用场景提供可靠设计参考。涵盖影响载流的关键因素,并整理实用的pcb过孔与电流对照一览表,帮助工程师优化布局与布线。

weixin_35677363的博客 633

Spring中的事件监听

案例分析引入事件监听 首先我们假定一个场景,我们此时有一个登录的功能,根据用户名和密码进行登录。然后此时想要添加一个新的功能,如果一个用户登录成功就给这个用户发送短信提醒该用户(正常情况是异地登录才会发送短信提醒,这里为了简化需求,只要登录就发送短信提醒用户) 我们先来看一种实现方式: // 注意这里是伪代码 public void login(String username, String password) { if(根据username查看数据库当中是否有这个用户) { 获取这个用户的数据库中的

技术积累,技术分享 4104

手把手讲解RTX5操作系统在GD32F407上的移植

然后将GD32F4xx_Demo_Suites_V2.6.4\GD32407V_START_Demo_Suites\Projects\01_GPIO_Running_LED下面的main函数复制到我们的项目文件夹中;打开对应GD32407V_START_Demo_Suites的文件夹下面的Utilities,复制gd32f407v_start.c和gd32f407v_start.h文件到一开始项目保存的文件夹下面;为了验证我们的操作系统是否被正确添加,是否能够正确运行,我们需要添加示例文件;

Praguejing的博客 1865

Spring的事件监听机制

设计模式 Spring的事件监听机制 观察者模式 ApplicationEventMulticaster AbstractApplicationEventMulticaster ApplicationListener ApplicationEvent

qq_45716444的博客 1684

python语言下使用opencv接口cv2.VideoCapture()接口调用海康机器人工业相机

文章目录 目录 文章目录 前言 一、opencv接口介绍 二、调用海康机器人工业相机 1.使用海康机器人工业相机的前提 2.调用海康机器人工业相机进行显示 3.调用海康机器人工业相机进行存图 4.调用海康机器人工业相机存视频 5.调用海康机器人工业相机进行简单图像处理 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下.

qq_39570716的博客 1万+

告别龟速!实测Copernicus Dataspace下载Sentinel-2数据的3个提速技巧(附Workspace批量操作)

本文分享了在Copernicus Dataspace平台高效下载Sentinel-2遥感数据的3个实用技巧,包括网络传输层优化、浏览器与API调优以及Workspace批量操作。通过这些方法,用户可将下载速度提升300%以上,特别适合科研人员和团队处理大规模数据需求。

weixin_30706691的博客 178

事件监听机制(四)从Java事件监听到Spring事件监听

从Java事件监听到Spring事件监听 java 事件监听 1. 发布订阅模式 java.util.Observable发布者 public class Observable { private boolean changed = false; private Vector&lt;Observer&gt; obs; /** Construct an Observable...

java界的小学生 1535

Plecs电力电子仿真专业教程-第一季 补充课程 Plecs的安装教程与软件下载

PLECS4.1.64免安装版本–点我下载 Plecs.Standalone-3.7.2版本--关注加私信给我可以提供下载链接 补充课程 Plecs的安装教程与软件下载 详细介绍Plecs软件的安装过程

1万+

spring中的事件监听机制

Spring event listener介绍自定义事件、监听和发布事件: 介绍 spring支持自定义的事件发布。 spring的事件机制基于ApplicationListener这个接口。 /* Interface to be implemented by application event listeners.Based on the standard {@code java.util.EventListener} interface for the Observer design pattern.

weixin_43810802的博客 1500

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Spring事件监听机制详解

Spring事件监听机制是一种基于观察者模式的设计,通过发布和监听事件,使得不同组件可以解耦地进行交互。事件类 (:封装需要传递的信息。事件发布者 (:负责发布事件。事件监听器 (:监听并处理事件。Spring事件监听机制通过和实现了组件之间的松耦合,增强了系统的灵活性和可扩展性。通过发布和监听事件,可以实现更高效、更模块化的应用设计。这一机制广泛应用于各种场景,如用户注册、订单处理、日志记录等。希望通过本文的介绍,大家能够更好地理解和应用Spring事件监听机制,为项目设计带来更多的便利和灵活性。

Evan 929

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

事件监听机制(二)Spring事件监听

事件监听机制(二)Spring事件监听 事件监听实现流程 事件对象: 继承自java.util.EventObject对象,由开发者自行定义实现。 事件源: 就是触发事件的源头,不同的事件源会触发不同的事件类型。 事件监听器: 事件监听器负责监听事件源发出的事件,事件监听器可以通过实现java.util.EventListener这个标识接口.,实现事件监听。 流程总结 事件源可以...

java界的小学生 1916

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

深入理解Spring事件监听机制

​ 对于开发者来说,使用 Spring 监听机制非常简单。只需要实现事件和监听器接口,并在代码中注册监听器即可。Spring 会自动管理事件和监听器的生命周期,确保它们的正确运行。同时,由于 Spring 监听器使用了异步执行机制,因此不会影响主线程的运行效率,保证了应用程序的高并发和高效性。

大张伟 1033

Spring 事件监听机制及原理分析

简介 在JAVA体系中,有支持实现事件监听机制,在Spring 中也专门提供了一套事件机制的接口,方便我们实现。比如我们可以实现当用户注册后,给他发送一封邮件告诉他注册成功的一些信息,比如用户订阅的主题更新了,通知用户注意及时查看等。 观察者模式 观察者模式还有很多其他的称谓,如发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对

gumenghua_com1的博客 687

Spring事件监听机制及其原理

Sprin事件监听机制是Spring框架中的一项重要技术,它允许在组件之间进行松耦合的通信,通过使用事件监听机制,应用程序的各个组件可以在不直接引用其它组件的情况下,相关通信。通过对Spring事件原理的解析来理解Spring事件监听机制

m0_37636269的博客 1472

Spring 事件监听机制详解

Spring事件监听机制是观察者模式的一种实现,它允许我们在应用中实现松耦合的组件间通信。通过事件监听,我们可以在某些操作发生时自动触发其他相关的业务逻辑,而无需直接调用。

m0_74399067的博客 628

技术派Spring事件监听机制及原理

这篇内容通过源码的形式讲解了 Spring 事件监听机制及其原理。

qq_64948664的博客 1437

深度解析 Spring 事件监听机制

Spring的事件监听机制基于观察者模式,实现了组件间的松耦合通信。核心包括事件(ApplicationEvent)、监听器(ApplicationListener)和发布器(ApplicationEventPublisher)。事件发布流程分为包装事件、获取监听器和广播事件三步。监听器可通过传统接口实现或@EventListener注解方式注册。高级特性支持异步处理(@Async)、事务同步事件等。源码分析表明,事件多播器(ApplicationEventMulticaster)是广播核心,默认实现Sim

csdn_tom_168的博客 1237
上一篇: HashMap实现原理与源码解析
下一篇: 解决 CentOS7 安装完成后ifconfig命令不能用
Array*
博客等级 码龄9年 2粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值