Spring ApplicationListener监听器用法

ApplicationListener

ApplicationListener是Spring框架中的一个接口,用于监听Spring应用程序中的事件。当应用程序中发生事件时,ApplicationListener会自动触发相应的回调方法,从而实现对事件的处理。


在Spring Boot中,常见的事件包括:

Spring Boot中,有许多常见的事件可以被监听。下面是一些常见的Spring Boot事件:1. ApplicationStartedEvent:在Spring Boot应用程序启动开始时触发,此时环境已经准备好,但是上下文还没有创建。2. ApplicationEnvironmentPreparedEvent:在Spring Boot应用程序环境准备好之后触发,此时上下文还没有创建。3. ApplicationPreparedEvent:在Spring Boot应用程序上下文创建之前触发,此时所有的bean定义已经加载完成,但是还没有实例化bean。4. ApplicationReadyEvent:在Spring Boot应用程序启动完成后触发,此时所有的bean已经初始化完成,应用程序已经可以响应请求。5. ApplicationFailedEvent:在Spring Boot应用程序启动过程中发生异常时触发,此时应用程序启动失败。除了上述事件,还有许多其他的事件可以监听,例如WebServerInitializedEventWeb服务器初始化完成时触发)、ContextRefreshedEvent(应用程序上下文刷新时触发)等。通过实现ApplicationListener接口,并重写onApplicationEvent方法,可以自定义监听器来处理这些事件。在Spring Boot中,可以通过在监听器类上添加@Component注解或实现ApplicationContextAware接口来注册监听器

ApplicationReadyEvent常用的方法:

1. getSource():获取触发事件的对象,通常是Spring Boot应用程序的ApplicationContext2. getApplicationContext():获取应用程序的ApplicationContext对象。3. getSpringApplication():获取SpringApplication对象,可以用于访问应用程序的配置和属性。4. getArgs():获取应用程序的启动参数。5. getEmbeddedServletContainer():获取嵌入式的Servlet容器对象,可以用于访问和配置Servlet容器的属性。6. getEmbeddedWebApplicationContext():获取嵌入式Web应用程序的ApplicationContext对象。

这些方法可以帮助在应用程序启动完成后执行一些特定的操作,例如初始化一些资源、加载配置文件等。

使用步骤

  1. 创建一个实现 ApplicationListener 接口的监听器类。
  2. 在监听器类中实现 onApplicationEvent 方法,该方法将在应用程序中发生事件时被触发。
  3. 在 Spring Boot 应用程序中注册监听器。

示例代码

示例1

@Component
public class MyApplicationListener implements ApplicationListener<ApplicationEvent> {@Overridepublic void onApplicationEvent(ApplicationEvent event) {if (event instanceof ApplicationStartedEvent) {// 应用程序启动事件System.out.println("Application started.");} else if (event instanceof ApplicationStoppedEvent) {// 应用程序关闭事件System.out.println("Application stopped.");}}
}

示例2

import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;@Component
public class MyApplicationListener implements ApplicationListener<ApplicationReadyEvent> {@Overridepublic void onApplicationEvent(ApplicationReadyEvent event) {// 在这里编写事件处理逻辑System.out.println("收到事件:" + event.getClass().getSimpleName());}
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Harmony ArkTS语言

ArkTS语言 前言正文一、声明式UI二、数据列表① 创建ArkTS文件② 添加资源③ 样式④ 组件⑤ 标题组件⑥ 列表头组件⑦ 列表Item组件⑧ 组件生命周期⑨ 渲染列表数据⑩ 单选 三、源码 随着华为宣布鸿蒙后续的版本不再兼容Android应用之后&#xff0c;对于现在的开发环境来说有一…

Java BIO模型分析(提供单线程和多线程服务端代码示例)

目录 一、BIO特点介绍二、BIO代码实现2.1、客户端代码准备2.2、服务端单线程处理2.2.1、服务端代码2.2.2、阻塞代码分析2.2.3、存在问题 2.3、服务端多线程处理2.3.1、服务端代码2.3.2、存在问题 一、BIO特点介绍 BIO(blocking I/O)&#xff1a;同步阻塞IO&#xff0c;在每个I…

【总结】kubernates crd client-java 关于自定义资源的增删改查

Java model 准备 首先使用 crd.yml 和 kubernetes CRD 自动生成 Java model 类&#xff0c;这是一切的前提&#xff0c;之前在这个地方也卡了很久。如何生成在另外一个文章中已经有所记录。 使用 crd.yml 和 kubernetes CRD 自动生成 Java model 类 CustomObjectsApi 文档学习…

AI人工智能入门之图像识别

人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;是一门涵盖多个领域的科学技术&#xff0c;旨在使计算机能够模拟人类智能。 其中一个热门的应用领域就是图像识别。 图像识别是指计算机通过对一幅图像进行分析和处理&#xff0c;来识别和理解图像…

【UnityUGUI】复合控件详解,你还记得多少

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;UI_…

linux总结

cat -n filename 查看文件,-n用来给每一行标行号,可以省略 cat /var/log/mysqld.log | grep password 我们可以通过上述指令&#xff0c;查询日志文件内容中包含password的行信息。 more 作用: 以分页的形式显示文件内容 语法: more fileName 操作说明: 回车键 …

企架布道:中电金信应邀出席2023佛山敏捷之旅暨DevOps Meetup

近日&#xff0c;2023佛山敏捷之旅暨DevOps Meetup活动顺利举行&#xff0c;本次活动以助力大湾区金融和互联网企业敏捷DevOps实施和效能提升为主题&#xff0c;共设立 2个会场&#xff0c;16个话题分享&#xff0c;200余位金融、互联网企业相关从业人员齐聚一堂&#xff0c;共…

代码随想录Day15 二叉树 LeetCodeT513 找树左下角的值 T112路径总和 T106 从中序和后序遍历构造二叉树

以上思路来自于:代码随想录 (programmercarl.com) LeetCode T513 找树左下角的值 题目思路: 本题思路:这题我们使用递归法和迭代法解决问题 注意:左下角的值不一定就是一直向左遍历的叶子结点的值,首先可以确定是最后一行的第一个叶子结点的值,也就是最大深度的叶子结点的值 定…

c 利用进程的聊天程序

利用父进程&#xff0c;子进程分别监控同一socket文件的读与写&#xff0c;感觉应该加入两进程的互斥&#xff0c;也就是不能在同一时间又读又写&#xff0c;但现在没加也可以用。可能是使用频速不高。用pipe管道置一标准位来完成互斥。我现在用小熊猫c来编程&#xff0c;发现不…

如何打造一个网络框架模块对接服务器

一、了解网络框架的基本原理 在开始打造网络框架模块之前&#xff0c;首先需要了解网络框架的基本原理。网络框架是一个软件模块&#xff0c;用于处理网络通信的各种细节&#xff0c;包括数据传输、协议解析、错误处理等。常见的网络框架有HTTP、TCP/IP、WebSocket等。 对啦&…

【pytorch】深度学习准备:基本配置

深度学习中常用包 import os import numpy as np import torch import torch.nn as nn from torch.utils.data import Dataset, DataLoader import torch.optim as optimizer超参数设置 2种设置方式&#xff1a;将超参数直接设置在训练的代码中&#xff1b;用yaml、json&…

【error】root - Exception during pool initialization

报错提示&#xff1a;root - Exception during pool initialization. 错误原因&#xff1a; 配置数据库出错 我的错误配置&#xff1a; spring.datasource.urljdbc:mysql://localhost:3306/springboot?serverTimezoneGMT spring.datasource.nameroot spring.datasource.pass…

Flink---11、状态管理(按键分区状态(值状态、列表状态、Map状态、归约状态、聚合状态)算子状态(列表状态、广播状态))

星光下的赶路人star的个人主页 这世上唯一扛得住岁月摧残的就是才华 文章目录 1、状态管理1.1 Flink中的状态1.1.1 概述1.1.2 状态的分类 1.2 按键分区状态&#xff08;Keyed State&#xff09;1.2.1 值状态&#xff08;ValueState&#xff09;1.2.2 列表状态&#xff08;ListS…

基于NLopt的C语言非线性优化案例

以官方给的例程&#xff0c;重新梳理&#xff0c;以供理解NLopt的使用。 问题被定义为&#xff1a; min ⁡ x ∈ R 2 x 2 s u b j e c t t o x 2 ≥ 0 , x 2 ≥ ( a 1 x 1 b 1 ) 3 , a n d x 2 ≥ ( a 2 x 1 b 2 ) 3 f o r p a r a m e t e r s a 1 2 , b 1 0 , a 2 − 1…

Java 串行接口调用优化

准备面试总结下 1.CompletableFuture static ThreadPoolExecutor poolExecutor new ThreadPoolExecutor(10, 20, 1000L, TimeUnit.MICROSECONDS, new ArrayBlockingQueue<>(100));public static void main(String[] args) throws ExecutionException, InterruptedExcep…

Redis哨兵机制原理

Redis哨兵机制可以保证Redis服务的高可用性。它通过启动一个或多个哨兵进程&#xff0c;监控Redis主服务器是否宕机&#xff0c;如果宕机&#xff0c;哨兵进程会自动将一个从服务器&#xff08;Slave&#xff09;升级为主服务器&#xff08;Master&#xff09;&#xff0c;并通…

JavaScript使用类-模态窗口

**上节课我们为这个项目获取了一些DOM元素&#xff0c;现在我们可以继续&#xff1b;**这个模态窗口有一个hidden类&#xff0c;这个类上文我们讲了&#xff0c;他的display为none&#xff1b;如果我们去除这个hidden的话&#xff0c;就可以让这个模态窗口展现出来。如下 cons…

【Debian系统】:安装debian系统之后,很多命令找不到,需要添加sudo之后才能使用,以下解决方法

项目场景&#xff1a; 问题描述 解决方案&#xff1a; 1.临时解决方案 2.永久解决方案 1.首先打开编辑&#xff1a; 2.打开之后最后一行添加代码&#xff1a; 3.最后运行一遍 .bashrc 4.已经可以了&#xff0c;可以试试reboot&#xff0c;重启一下机子 一点一滴才能成长 …

windows的最佳选项卡式窗口管理器软件TidyTabs

下载&#xff1a; https://jmj.cc/s/z1t3kt?pucodeS1wc https://download.csdn.net/download/mo3408/88420433 TidyTabs是一款Windows应用程序&#xff0c;它可以将多个打开的窗口整理成一个选项卡式的界面&#xff0c;使得用户可以更加方便地切换和管理不同的窗口。 Tidy…

java try 自动关闭流

Java Try自动关闭流实现步骤 在开始之前&#xff0c;我们先来了解一下整个实现过程的流程。下面的表格展示了实现"try自动关闭流"的步骤&#xff1a; 步骤 描述 1 创建需要操作的流对象 2 在try语句块中使用流对象 3 在try语句块中自动关闭流对象 接下来…