【详细学习SpringBoot源码之自定义监听器实战演练-6(自定义监听器、自定义监听事件、指定监听事件)】

springboot项目实战 applicationEvent + EventListener 实现自定义监听器 自定义处理框架 阅读详情

一.知识回顾

【0.SpringBoot专栏的相关文章都在这里哟,后续更多的文章内容可以点击查看】
【1.SpringBoot初识之Spring注解发展流程以及常用的Spring和SpringBoot注解】
【2.SpringBoot自动装配之SPI机制&SPI案例实操学习&SPI机制核心源码学习】
【3.详细学习SpringBoot自动装配原理分析之核心流程初解析-1】
【4.详细学习SpringBoot自动装配原理之自定义手写Starter案例实操实战-2】
【5.IDEA中集成SpringBoot源码环境详细步骤讲解】
【6.初识SpringBoot核心源码之SpringApplication构造器以及run方法主线流程-3】
【7.详细学习SpringBoot核心源码之SpringApplication构造器&Run方法源码详细流程-4】
【8.详细学习SpringBoot核心源码之监听器原理-5(观察者设计模式、初始化并加载监听器核心流程、事件的发布器核心流程、SpringBoot中默认的监听器以及默认的事件类型)】

二.SpringBoot源码之自定义监听器

上一篇文章我们详细的学习了SpringBoot中的监听器机制,清楚的知道了SpringBoot中默认给我们提供了多个监听器,提供了一个默认的事件发布器,还有很多默认的事件,接下里我们就在前面的基础上来自定义实现一个监听器。

2.1 监听所有事件

创建一个自定义监听器监听所有的事件。创建一个自定义MyApplicationListener的类,实现ApplicationListener接口在泛型中指定要监听的事件类型即可,如果要监听所有的事件,那么泛型就写ApplicationEvent。

import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;

/**
 * TODO:自定义监听器实现步骤
 * 1.实现ApplicationListener接口,泛型中是触发监听的事件,我们指定所有的ApplicationEvent事件
 * 2.需要我们在spring.factories文件中配置
 */
public class MyApplicationListener implements ApplicationListener<ApplicationEvent> {
    @Override
    public void onApplicationEvent(ApplicationEvent applicationEvent) {
        System.out.println("MyApplicationListener started>>>>>:");
    }
}

在resources目录下创建一个文件夹META-INF,并在目录下创建又给文件spring.factories文件。

在这里插入图片描述

之后为了在容器启动中能够发下我们的监听器并且添加到SimpleApplicationEventMulticaster中,我们需要在spring.factories中注册自定义的监听器

在这里插入图片描述

controller层模拟一个触发请求的监听事件

@RestController
public class TestController {

    @Autowired
    ApplicationContext applicationContext;

    /**
     * TODO:通过模拟一个请求来进行事件的发布以及监听的小demo
     */
    @GetMapping("/testListener")
    public String testListener(){
        applicationContext.publishEvent(new Object());
        return "testListener";
    }

}

启动服务的时候就可以看到相关事件发布的时候,我们的监听器被触发了。

在这里插入图片描述

2.2 监听特定事件

如果我们想要监听特定的事件就需要在实现接口的时候在泛型处指定即可。

import org.springframework.boot.context.event.ApplicationStartingEvent;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;

/**
 * TODO:自定义监听器实现步骤
 * 1.实现ApplicationListener接口,泛型中是触发监听的事件,我们指定所有的ApplicationEvent事件
 * 2.需要我们在spring.factories文件中配置
 */
public class MyApplicationListener implements ApplicationListener<ApplicationStartingEvent> {

    @Override
    public void onApplicationEvent(ApplicationStartingEvent applicationStartingEvent) {
        System.out.println("MyApplicationListener>>>>"+applicationStartingEvent.toString());
    }
}

启动服务查看运行效果:

在这里插入图片描述

2.3 自定义事件

如果我们想要通过自定义的监听器来监听自定义的事件呢?我们就需要在之前自定义监听器的基础上,再创建自定义的事件类,只需要继承ApplicationEvent。

import org.springframework.context.ApplicationEvent;

/**
 * TODO:自定义事件类需要继承ApplicationEvent
 */
public class EventDemo extends ApplicationEvent{

    public EventDemo(Object source) {
        super(source);
    }
}

然后在我们自定义的监听器中监听自定义的事件

/**
 * TODO:自定义监听器实现步骤
 * 1.实现ApplicationListener接口,泛型中是触发监听的事件,我们指定所有的ApplicationEvent事件
 * 2.需要我们在spring.factories文件中配置
 */
public class MyApplicationListener implements ApplicationListener<EventDemo> {
    
    @Override
    public void onApplicationEvent(EventDemo eventDemo) {
        System.out.println("MyApplicationListener>>>>>"+eventDemo);

    }
}

controller层特定的业务场景中类发布对应的事件了

import com.ljw.listenerdemo.event.EventDemo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.ApplicationContext;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @Autowired
    ApplicationContext applicationContext;

    /**
     * TODO:通过模拟一个请求来进行事件的发布以及监听的小demo
     */
    @GetMapping("/testListener")
    public String testListener(){
        applicationContext.publishEvent(new EventDemo(new Object()));
        return "testListener";
    }

}

项目启动
在这里插入图片描述

浏览器发送请求,返回控制台查看结果
在这里插入图片描述

明显的看到对应的监听器触发了,达到了我们预期的效果。

在这里插入图片描述

好了,到这里【详细学习SpringBoot源码之自定义监听器实战演练-6(自定义监听器、自定义监听事件、指定监听事件)】就先学习到这里,下一篇我们将学习SpringBoot中配置文件的加载。希望对你有所帮助。我们一起加油。敬请期待。

【Spring Boot实战与进阶】自定义事件及监听 OverrideSystem.out.println(“接受到了事件:”+event.getClass());System.out.println(“接受到了事件:”+event.getSource());@OverrideSystem.out.println(“接受到了事件:”+event.getClass());自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。 阅读详情

相关推荐

Spring Boot 监听器详解

SpringApplicationRunListener 是SpringApplication 的运行监听器,提供Spring Boot启动时各个运行状态的监听,可以在应用程序启动的时候执行一些自定义操作或记录一些信息。SpringApplicationRunListener 在run中加载。是Spring 提供的上下文监听器,可用于监听指定感兴趣的事件。最后还是用一张图来总结整个流程作者其他文章:Prometheus 系列文章Prometheus 的介绍和安装。

分享技术干货和灵感、推荐新书和好玩的项目、分享Java面试题 8817

SpringBoot 自定义监听器

SpringBoot 自定义监听器。

TechnicianWang的博客 1839

MATLAB新手必看:5分钟搞定直流无刷电机Simulink仿真(附完整模型下载)

本文为MATLAB新手提供直流无刷电机Simulink仿真的快速入门指南,涵盖从环境配置到速度控制闭环实现的完整流程。通过详细的模块选择和参数设置说明,帮助读者5分钟内搭建基础仿真模型,并附赠完整模型下载,助力快速掌握电机控制仿真技术。

efc123456的博客 984

Spring中自定义事件监听

当处理完一段代码逻辑,后面需要同时执行多个任务,有什么好方法呢?如果在微服务项目中,可以使用MQ;但如果是单机,spring为我们提供了事件监听。

我的E家 1524

SpringBoot 指标监控——Actuator

1、 访问:localhost:8000/actuator 设置健康监控显示具体情况 metrics http://localhost:8000/actuator/metrics/jvm.gc.live.data.size 定制化health信息 //利用构造器,在注册中心中添加cityService.saveCity.count指标 public CityServiceImpl(MeterRegistry meter...

weixin_44302046的博客 4628

深入解析MSPM0系列Keil开发中‘ti_msp_dl_config.h‘缺失问题的根源与修复

本文深入解析TI MSPM0系列Keil开发中'ti_msp_dl_config.h'文件缺失问题的根源与修复方法。该错误常见于编译时提示file not found,主要因SysConfig工具未正确生成或工程路径配置错误导致。文章提供了从环境检查、手动生成文件到工程配置调整的系统化解决方案,帮助开发者快速解决这一常见KEIL开发难题。

gold的博客 970

Springboot-自定义运行监听器(SpringApplicationRunListener)

Springboot暴露了对运行时过程监听的接口,其默认实现是org.springframework.boot.context.event.EventPublishingRunListener,通过此监听器进行发布相关事件,同时开发人员也可以自定义该接口的实现。pom.xml如下自定义监听器配置监听器resources/META-INFO/spring.factories文件中增加自定义的运行监听器启动引导类控制台输出自定义运行监听器已生效。Springboot在启动时会加载一个SpringFactorie

ilwoziji的博客 1151

spring-ai学习(四)-MCP

创建一个springai项目1.依赖。

zql1455890112的博客 1384

SpringBoot源码之自定义监听器

接下来我们通过几个自定义事件来加深下对事件监听机制的理解那如果我们想要通过自定义的监听器来监听自定义的事件呢?首先创建自定义的事件类,非常简单,只需要继承ApplicationEvent即可然后在自定义的监听器中监听自定义的事件。同样的别忘了在spring.factories中注册哦之后我们就可以在我们特定的业务场景中类发布对应的事件了然后当我们提交请求后可以看到对应的监听器触发了这样一来不光搞清楚了SpringBoot中的监听机制,而且也可以扩展应用到我们业务开发中了。

埃泽漫笔 1049

学习记录(十一)--Pattern Recognition投稿记录

上一周特别忽然通知统计建模要答辩,确定是否晋级国赛,一直在准备答辩的事情,所以上一周没有总结周汇报,深刻检讨!!!不过结果是好的,我们组第二名晋级哦。这周主要是跟大家分享一下我投稿PR(Pattern Recognition)的一个时间线,以及投稿后的工作。一、PR从投稿到接收的时间线2025.4.3 Major Revision(ddl4.23) 当时正在弄比赛和另一个着急推进的文章2025.5.30 Minor Revision 这次小修基本上只有一些格式和简单一点点问题。

qq_54949944的博客 1917

Gemini 3.1 Flash本地部署实操:Ollama+Open WebUI零门槛运行指南

大型语言模型(LLM)本地运行是指将模型权重下载至本地设备,通过推理引擎完成离线推理的过程;其核心原理依赖量化压缩(如GGUF格式)与轻量级运行时(如Ollama)实现CPU/GPU高效加载;技术价值在于低延迟响应、数据隐私可控及免网络依赖;典型应用场景包括办公提效(邮件/周报生成)、学生学习辅助、产品原型验证等边缘AI任务;本文聚焦Gemini 3.1 Flash这一面向消费级硬件优化的轻量模型变体,结合Ollama模型管理与Open WebUI图形界面,提供从环境准备、模型拉取到流式对话的完整新手实操路

weixin_32238157的博客 490

SpringBoot源码之监听器设计

*** 目标对象* 继承 Observable*/state = s;//目标对象的状态发生了改变//表示目标对象已经做了更改//通知所有的观察者观察者只需要继承Observable父类。发送消息的方式执行如下两行代码即可//表示目标对象已经做了更改//通知所有的观察者/*** 观察者模式:观察者(消息订阅者)* 实现Observer接口*/@Override。

埃泽漫笔 1016

MS1861宏晶微视频显示与控制器芯片:开发资料全解析与应用指南

本文全面解析了宏晶微MS1861视频显示与控制器芯片的核心功能与开发流程。该芯片作为高性能的“视频信号翻译官”,支持HDMI、LVDS等多种输入与MIPI、LVDS等输出,集成强大的图像处理与OSD叠加功能。文章详细介绍了从资料获取、环境搭建到以HDMI转MIPI为例的实战配置与调试技巧,为工业HMI、广告机等应用的开发者提供了完整的应用指南。

weixin_29198045的博客 337

springboot监听器模式源码精讲

很多时候我们看源码的时候看不下去,其中一个原因是系统往往使用了许多设计模式,如果你不清楚这些设计模式,这无疑增加了你阅读源码的难度。 `springboot`中就大量使用了设计模式,本文主要介绍其中的一种**监听器模式**,这是观察者模式中的一种。

gzmyh的博客 1164

智能座舱SoC平台横评:SA8155P、SA8255P、SA8295P、MT8678、MT8628 谁是下代车机首选?

高通SA8295P以PC级架构、强悍AI算力,代表安卓阵营迈向“本地大模型+空间计算”阶段;联发科MT8678则凭借低功耗 + 高带宽,成为副驾多媒体/副屏智能化的性价比之王。在座舱设计中,SoC平台决定了你能给用户什么样的交互方式,选型时切忌只看跑分,而要回归“体验-热设计-平台生态”的三角平衡。

weixin_43199439的博客 3358

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

SpringBoot监听器

本文将介绍SpringBoot监听器作用和用法;采用监听器设计模式和SpringBoot手写监听器分别实现同一个文件上传进度条功能;如何使用SpringBoot监听器;SpringBoot监听器实现原理源码;SpringBoot线程池在监听器中的使用。 (一)SpringBoot监听器作用和用法  监听器:又名事件驱动器。listener是servlet规范中定义的一种特殊类。用于监听servletContext、HttpSession和servletRequest等域对象的创建和销毁事件。监听域对象的

qq_20395245的博客 4208

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

springboot中监听器使用

在springboot 应用中,使用监听器有servlet容器的,有spring的 一:先看springboot中怎么使用servlet的监听器(servlet容器中的) 定义servlet监听器 package com.hzt.listener; import javax.servlet.ServletContextEvent; import javax.servlet.ServletCont...

weixin_41490593的博客 5856

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

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

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

SpringBoot 源码解析3:事件监听器

SpringBoot监听器

java_xiaoba1的博客 2553

【SpringBoot深入理解源码】之系统监听器

万物皆有裂痕 那是光照进来的地方。 文章目录监听器模式系统监听器系统监听器系统广播器系统事件监听事件触发机制加载定义的监听器获取符合条件的监听器自定义监听器实战实现方式为什么ThirdListener设置的优先级低,却加载快总结 监听器模式 在编程的世界中,监听无所不在,譬如你点击一个音乐播放器的播放按钮,就播放一首音乐;点击相机的拍照按钮,就拍一张照片。也就是你触发某种行为,便会执行具体的动作。 四要素 事件------顾名思义,事件发生的源头,比如点击的按钮,属于被监听的对象; 监听器-----.

铭记: 1392

【Spring Boot 源码学习】SpringApplication 的 run 方法监听器

本篇博文 Huazie 同大家一起深入分析了 SpringApplication 的 run 方法监听器,从配置的加载,接口定义,实现类等方面作了详细了解,最后通过自定义 SpringApplicationRunListener 接口实现并运行查看,进一步加深了理解。

Huazie 2049

在SpringBoot的SpringApplication中ApplicationListener监听器是如何监听应用事件的

ApplicationListener监听器、SpringApplicationEvent应用事件兜兜转转,经过 EventPublishingRunListener 监听器的封装,最终还是在 SpringApplication 的 run() 方法里,通过 SpringApplicationRunListeners 对象在SpringApplication的生命周期全阶段执行。每个SpringApplicationEvent 监听事件都是通过 ApplicationListener 监听。

八戒的博客 1275

SpringBoot源码初学者(二):SpringBoot事件监听器

ps:真正适合阅读源码的新手来看的SpringBoot源码讲解,如果你真的想读懂SpringBoot源码,可以按照以下推荐的方式来阅读文章 打开ide,打开SpringBoot源码,跟着文章一起写注释,写自己的注释 不要过于纠结没讲到的地方,毕竟SpringBoot源码那么多,想全讲完是不可能的,只要跟着文章认真阅读,SpringBoot是如何运行的一定可以有一个较为深刻的理解 文章适合通篇阅读...

敲代码的旺财的博客 784

SpringBoot自定义事件监听

1.事件监听背景介绍 在spring中,事件监听机制主要涉及4个实现类。 ApplicationEvent:事件,每个实现类表示一类事件,可携带数据。抽象类。 ApplicationListener:事件监听器,用于接收事件处理时间。接口。 ApplicationEventMulticaster:事件管理者,可以添加/移除事件。用于事件监听器的注册和事件的广播。接口。 ApplicationEventPublisher:事件发布者,委托ApplicationEventMulticaster完成事件发布

jainszhang的博客 1897

【SpringBoot源码】掌握了监听机制的本质开发中这真的很爽

SpringBoot监听机制的本质和应用

波波烤鸭的博客 2万+

深入浅出SpringBoot源码——监听器与事件机制

前言 先看下Spring官方文档对于事件以及监听器的解释与说明。 监听器官方说明 总结起来就是几点: 除了通常的Spring框架自带的事件例如:ContextRefreshedEvent,SpringApplication还会发送一些额外的事件。 对于事件的监听,需要通过监听器来实现。在SpringBoot中,监听器可以通过三种方式来注册, ① 通过SpringApplication.addListeners(…) ② 通过SpringApplicationBuilder.listeners(…) ③

你要悄悄的拔尖,然后惊艳所有人 1215
上一篇: 【详细学习SpringBoot核心源码之监听器原理-5(观察者设计模式、初始化并加载监听器核心流程、事件的发布器核心流程、SpringBoot中默认的监听器以及默认的事件类型)】
下一篇: 【LeetCode每日一题:775.全局倒置与局部倒置~~~维护前缀最大值】
硕风和炜
硕风和炜 优质创作者: Java技术领域 优质创作者: Java技术领域
博客等级 码龄7年 2万+粉丝 1024原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

硕风和炜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值