详解Spring监听应用程序事件(ApplicationListener)

【spring】 ApplicationListener的使用及原理简析 ApplicationListener 是spring提供的一个监听器,它可以实现一个简单的发布-订阅功能,用有点外行但最简单通俗的话来解释:监听到主业务在执行到了某个节点之后,在监听器里面做出相应的其它业务变更。下面我们具体看段代码,则能很快的理解 阅读详情

目录

一、Spring事件的一些关键概念和用法

二、ApplicationReadyEvent 事件详解


在Spring框架中,事件是一种用于在应用程序中处理异步消息的机制。Spring框架提供了一个事件处理机制,允许对象在特定事件发生时被通知并执行相应的操作。这个事件机制基于观察者设计模式。

一、Spring事件的一些关键概念和用法

  1. 事件(Event): 事件是一个对象,用于封装发生的特定状态或动作。在Spring中,通常通过继承ApplicationEvent类来创建自定义事件。

  2. 事件发布者(Event Publisher): 事件发布者是负责发布事件的对象。在Spring中,通过ApplicationContext的publishEvent方法来发布事件。

  3. 事件监听器(Event Listener): 事件监听器是一个实现了ApplicationListener接口的对象,用于接收并处理特定类型的事件。监听器在ApplicationContext中注册,以便在事件发生时被调用。

  4. 事件广播器(Event Multicaster): 事件广播器负责将事件分发给注册的监听器。在Spring中,使用ApplicationEventMulticaster来实现事件的广播。

下面是一个简单的Spring事件处理的示例:

// 定义自定义事件
public class MyCustomEvent extends ApplicationEvent {
    public MyCustomEvent(Object source) {
        super(source);
    }
    
    // 可以在事件类中添加自定义方法和属性
}

// 创建事件发布者
@Component
public class MyEventPublisher {
    @Autowired
    private ApplicationEventPublisher eventPublisher;

    public void publishCustomEvent() {
        MyCustomEvent customEvent = new MyCustomEvent(this);
        eventPublisher.publishEvent(customEvent);
    }
}

// 创建事件监听器
@Component
public class MyEventListener implements ApplicationListener<MyCustomEvent> {
    @Override
    public void onApplicationEvent(MyCustomEvent event) {
        // 处理事件的逻辑
        System.out.println("Custom event received: " + event.toString());
    }
}

 在上述示例中,MyCustomEvent是自定义事件类,MyEventPublisher负责发布事件,而MyEventListener是监听器,负责在事件发生时执行相应的逻辑。

二、ApplicationReadyEvent 事件详解

ApplicationReadyEvent 是Spring Framework中的一个内置事件,它表示应用程序已经启动并准备好接收请求。当Spring Boot应用程序启动完成时,就会触发 ApplicationReadyEvent 事件。通常,在这个事件中,应用程序已完成初始化并已经准备好提供服务。

如果你想在应用程序完全启动后执行一些逻辑,可以使用 ApplicationReadyEvent 事件监听器。以下是一个简单的示例:

import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;

@Component
public class MyApplicationReadyEventListener implements ApplicationListener<ApplicationReadyEvent> {

    @Override
    public void onApplicationEvent(ApplicationReadyEvent event) {
        // 应用程序已启动,可以执行相应的逻辑
        System.out.println("Application is ready to receive requests!");
    }
}

在上述示例中,MyApplicationReadyEventListener 类实现了 ApplicationListener<ApplicationReadyEvent> 接口,并重写了 onApplicationEvent 方法。当应用程序启动完成时,Spring容器会触发 ApplicationReadyEvent 事件,从而调用这个方法。

需要注意的是,MyApplicationReadyEventListener 类上添加了 @Component 注解,这样Spring容器会自动扫描并注册这个监听器。

使用 ApplicationReadyEvent 事件监听器是一种方便的方式,可以在应用程序完全启动后执行一些初始化或准备工作,例如加载缓存、连接到外部服务等。

深入理解Spring的容器内事件发布监听机制 前言 Spring 提供了 ApplicationContext 事件机制,可以发布和监听事件,这个特性非常有用。 Spring 内置了一些事件和监听器,例如在 Spring 容器启动前,Spring 容器启动后,应用启动失败后等事件发生后,监听在这些事件上的监听器会做出相应的响应处理。 当然,我们也可以自定义监听器,监听 Spring 原有的事件。或者自定义我们自己的事件和监听器,在必要的时间点发布事件,然后监听器监听到事件就做出响应处理。 ApplicationContext 事件机制 Applic 阅读详情

相关推荐

一篇文章读懂SimpleApplicationEventMulticaster

Spring 框架中的事件机制是观察者设计模式的一个典型实现,它基于发布-订阅模式(Publish-Subscribe)。在 Spring 中,事件是由事件发布者(ApplicationEventPublisher)发布的,而事件监听器(ApplicationListener)则是观察者,负责处理特定类型的事件。事件是应用程序中可能发生的事情,它通常是一个继承自的类。开发人员可以定义自己的事件类,以便在应用程序中传递关键信息。接口是事件发布者的标准接口,它定义了发布事件的方法。

Overman的代码世界 1562

ApplicationReadyEvent的使用

前言 对于ApplicationReadyEvent,官网的解释是:事件尽可能晚发布,以指示应用程序已准备好为请求提供服务。该事件的来源是SpringApplication本身,但要注意修改其内部状态,因为届时所有初始化步骤都将完成。顾名思义就是SpringApplication准备就绪之后的事件,我们可以把一些有可能出现类未初始化异常的操作放在这里面执行 使用 @Component public class BackendReadyEventListener implements ApplicationL

一如年少丶的博客 8505

【Spring Boot 源码学习】ApplicationListener 详解

本篇Huazie带大家详细分析了中的加载和处理应用程序事件,这对于后续的运行流程的理解至关重要。

2301_78976656的博客 1315

SpringBoot-关于ContextRefreshedEvent 和 ApplicationReadyEvent 触发时间以及触发机制的研究

从源码来看 ContextRefreshedEvent 以及ApplicationReadyEvent 事件触发时间与机制

lhf2112的博客 6706

浅谈Spring事件监听

声明:笔者以下所有的代码和实验都是基于Spring boot 的 2.0.0.RELEASE 版本。           另外笔者能力有限,文中但凡有不对或者用词不当之处,望不吝指出。在谈Spring的事件监听之前,让我们先了解一下Spring容器,什么是ApplicationContext ?它是Spring的核心,Context我们通常解释为上下文环境,但是理解成容器会更好些。 Applica...

雪夜苍狼的博客 5993

MDK5 Debug调试方法总结

MDK5 Debug调试方法总结

m0_70748084的博客 2万+

Spring监听器用法与原理详解(带ApplicationListener模型图)

相信大家都或多或少知道Spring中的监听器,有些人还能说出它采用了观察者模式,但其实它还用到了适配器模式工厂模式等。当然,仍有不少人是完全不了解Spring的监听及其机制的,本次我们就来深入学习一下Spring监听器观察者模式(Observer Pattern)是一种行为设计模式,它用于在对象之间建立一对多的依赖关系。在该模式中,当一个对象的状态发生变化时,它会自动通知其依赖对象(称为观察者),使它们能够自动更新主题对象维护一个观察者列表,并提供方法用于添加和删除观察者。当主题的状态发生变化时,它会。

战斧的博客 1万+

RK3588 EVB开发板原理图讲解【六】

该原理图展示了eMMC Flash与主控芯片之间的连接关系,以及相关的电源、信号线路和去耦电容等。

weixin_48721556的博客 1174

【Spring | 事件监听详解】

Spring 事件监听详解

爱媳妇儿爱编程 4390

【机器人学习】abb工业机器人运动学分析与圆弧轨迹规划(三维模型+matlab代码)

下载链接 solidworks模型 D-H建模 圆仿真过程 视频过程:

yjw0911的博客 2532

Claude Code 完整学习笔记

Claude Code 学习笔记摘要 Claude Code是Anthropic推出的智能编码工具,基于Claude Opus 4.5模型构建,提供跨平台支持(终端/VS Code/JetBrains/Web等)。核心功能包括: 代码库理解与多文件编辑 命令执行与开发工具集成 智能体协作开发流程 安装要求Node.js≥18,提供原生/Homebrew/npm等多种安装方式,支持环境变量配置API访问。基础交互模式包括会话管理、文件操作和代码审查等功能,可自动读写文件并执行精确修改。 (149字)

虚心若愚 812

七.Spring之ApplicationListener事件监听、@EventListener

看看注释:由应用事件监听器实现的接口,基于观察者设计模式。 方法是处理应用事件。 /** 由应用事件监听器实现的接口,基于观察者设计模式 * Interface to be implemented by application event listeners. * Based on the standard {@code java.util.EventListener} int...

u014203449的博客 5002

基于DWA算法的机器人动态避障技术实现及matlab代码

DWA算法是一种基于轨迹的运动规划算法,其核心思想是:在机器人当前位置及速度的基础上,结合机器人感知到的环境信息,生成一组合法的速度指令,然后从这组速度指令中选取代价最小的速度指令作为机器人的下一步操作。下面,我们将通过一个实例来演示基于DWA算法的机器人动态避障技术实现。假设机器人在一个宽敞的场地内行驶,但场地内有一些固定障碍物和移动障碍物,机器人需要避开这些障碍物,并在场地内自由移动。本文给出了一种基于DWA算法的机器人动态避障技术实现及相应的matlab代码,读者可以根据自身需求进行修改和调整。

uote_e的博客 1003

事件机制与Spring ApplicationListener源码详解

事件机制与Spring ApplicationListener 源码详解

Blank_JK的博客 2137

AI大模型探索之路-应用篇11:AI大模型应用智能评估(Ragas)

随着人工智能技术的飞速发展,AI大模型(LLM)已经成为了推动技术创新和应用的关键因素。这些大模型在语言理解、图像识别、自然语言生成等领域展现出了惊人的能力。然而,随着模型规模的增大,它们对计算资源的消耗、环境适应性、模型稳定性、安全性和可解释性等方面也提出了新的挑战。因此,对AI大模型进行智能评估变得至关重要,以确保它们在实际应用中的稳定性、可靠性和有效性。本文将详细介绍Ragas框架,一个专为AI大模型设计的智能评估工具。

寻道AI,探索AI无限可能! 5546

游戏大厂如何解析引擎技术

本文系统解析了游戏大厂如何评估和定制游戏引擎。游戏引擎作为游戏开发的核心基础,大厂会从性能、跨平台支持、渲染能力、网络模块等8个维度进行技术解析,通过文档查勘、源码阅读、Demo测试等7个步骤深度评估。解析后通常有三种决策:直接使用、深度定制或自研重构。文章以腾讯、网易、米哈游等为例,展示了不同厂商的引擎定制策略,并分析了技术解析面临的挑战和未来趋势。最终指出,体系化的引擎技术解析是打造高质量游戏的关键,需要持续的技术投入和团队协作。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 535

Spring 中的事件监听机制

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

swadian2008的博客 5762

MIKE水动力笔记7_实测数据与模型输出结果的拟合对比

上一博文【MIKE水动力笔记6】主要讲解如何自己制作实测数据的时间序列文件dfs0,而本博文讲解如何进行实测数据与模型输出结果的拟合对比。

晏长街的博客 1万+

spring boot ApplicationListener监听事件原理

package com.zdc.sp.listener; import java.util.EventListener; import org.springframework.context.ApplicationEvent; import org.springframework.context.annotation.ComponentScan; import org.springframew...

u014450465的博客 1251

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【spring】Spring事件监听器ApplicationListener的使用与源码分析

ApplicationEvent以及Listener是Spring为我们提供的一个事件监听、订阅的实现,内部实现原理是观察者设计模式,设计初衷也是为了系统业务逻辑之间的解耦,提高可扩展性以及可维护性。事件发布者并不需要考虑谁去监听,监听具体的实现内容是什么,发布者的工作只是为了发布事件而已。 Spring提供的内置事件: ContextRefreshedEvent:容器刷新事件 ContextStartedEvent:容器启动事件 ContextStoppedEvent:容器停止事件 ContextClo

morris 2万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

spring的事件监听

/ 事件A// 事件BSpring 容器启动时:通过 ApplicationContext 自动扫描所有实现了 ApplicationListener 接口的 Bean。底层机制在 Bean 初始化阶段,Spring 检测到 Bean 实现了 ApplicationListener 接口。将该 Bean 注册到 ApplicationEventMulticaster 的监听器列表中。

учёба 1763

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

通过Spring ApplicationListener监听器触发事件

参考:https://blog.youkuaiyun.com/liyantianmin/article/details/81017960 如果容器中有一个ApplicationListener Bean,每当ApplicationContext发布ApplicationEvent时,ApplicationListener Bean将自动被触发。这种事件机制都必须需要程序显示的触发。其中spring有一些内置的...

fuck487的博客 2586

Spring 的监听事件 ApplicationListener 和 ApplicationEvent 用法

什么是ApplicationContext?  它是Spring的核心,Context我们通常解释为上下文环境,但是理解成容器会更好些。  ApplicationContext则是应用的容器。 Spring把Bean(object)放在容器中,需要用就通过get方法取出来。 ApplicationEven 是个抽象类,里面只有一个构造函数和一个长整型的timestamp。 Applic

稻香的专栏 9669

Spring事件监听:ApplicationListener、ApplicationEvent

听到监听这个词,不难理解,一个事物根据另一个事物的变化自发的作出响应,而且每次都作出同样的响应。就像点击按钮一样。每次点击登入按钮,都会访问登入接口url,这就是监听。 那么监听需要哪些条件呢。三要素,1.事件2.监听器3.触发动作。点击按钮就是事件,点击之后要怎么处理,就是监听器的事了。那么问题来了,监听器肯定有很多个,每个监听器职责不一样,它们怎么知道要监听哪个事件的。当然是事先就告诉它们了。也就是说在发布事件的时候,所有监听器就已经准备就绪,然后根据事件类型匹配对应监听器。 事实上,spring就是

qq_25933249的博客 1399

Spring注解驱动开发——ApplicationListener(事件监听)

ApplicationListener:应用监听器,是一个抽象类,spring提供的基于事件驱动开发的功能,通过监听容器中发布的一些事件,事件发生则触发监听器的回调来完成事件驱动模型开发 @Component public class MyApplicationListener implements ApplicationListener<ApplicationEvent>{ ...

如不來的博客 2695
上一篇: 详解WebMvcConfigurer用法
下一篇: 详解git如何回滚提交记录
境里婆娑
境里婆娑 新星创作者: Java技术领域 新星创作者: Java技术领域 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄10年 1万+粉丝 300原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

境里婆娑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值