我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SpringBoot 监听器

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SpringBoot 监听器

介绍

Spring的监听器也可以说是一种观察者模式,它能实现事件与事件监听者直接的解耦,在Spring中监听器的实现主要有一下重要组件:

  • ApplicationListener:事件监听者,观察者;
  • ApplicationEvent:Spring 事件,记录事件源、事件内容、时间等数据;
  • 有些场景事件主体主要是String或基本类型,4.2版本之后,不再强制要求继承ApplicationEvent,非ApplicationEvent子类的对象将被包装成PayloadApplicationEvent
  • @EventListener:除了实现ApplicationListener接口注册监听器,也可以使用注解的方式
  • ApplicationEventPublisher:发布事件;

事件监听4种方式

springboot进行事件监听有四种方式:

  1. 手工向ApplicationContext中添加监听器
  2. 使用注解将监听器装载入spring容器
  3. 在application.properties中配置监听器
  4. 通过@EventListener注解实现事件监听

讲到事件监听,这里我们说下自定义事件和自定义监听器类的实现方式:

  • 自定义事件:继承自ApplicationEvent抽象类,然后定义自己的构造器

  • 自定义监听:实现ApplicationListener接口,然后实现onApplicationEvent方法。注意:该接口的实现类必须放到IOC容器中,否者不会起作用。

自定义事件

import org.springframework.context.ApplicationEvent;public class MyEvent extends ApplicationEvent {    private Long id;    private String name;    public MyEvent(Long id, String name) {        super(id);        this.name = name;    }    public Long getId() {        return id;    }    public void setId(Long id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}

发布事件

import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.ApplicationEventPublisher;import org.springframework.stereotype.Component;@Componentpublic class MyEventPublisher {    @Autowired    private ApplicationEventPublisher applicationEventPublisher;    public void publishEvent(Long id, String name) {        MyEvent event = new MyEvent(id,name);        applicationEventPublisher.publishEvent(event);    }}

1. 手工向ApplicationContext中添加监听器

首先创建MyListener1类

public class MyListener1 implements ApplicationListener{Logger logger = Logger.getLogger(MyListener1.class);public void onApplicationEvent(MyEvent event){logger.info(String.format("%s监听到事件源:%s.", MyListener1.class.getName(), event.getSource()));}}

然后在springboot应用启动类中获取ConfigurableApplicationContext上下文,装载监听

@SpringBootApplicationpublic class LisenterApplication{public static void main(String[] args){ConfigurableApplicationContext context = SpringApplication.run(LisenterApplication.class, args);//装载监听context.addApplicationListener(new MyListener1());}}

2. 使用注解将监听器装载入spring容器

创建MyListener2类,并使用@Component注解将该类装载入spring容器中

@Componentpublic class MyListener2 implements ApplicationListener{Logger logger = Logger.getLogger(MyListener2.class);public void onApplicationEvent(MyEvent event){logger.info(String.format("%s监听到事件源:%s.", MyListener2.class.getName(), event.getSource()));}}

3. 在application.properties中配置监听器

首先创建MyListener3类

public class MyListener3 implements ApplicationListener{Logger logger = Logger.getLogger(MyListener3.class);public void onApplicationEvent(MyEvent event){logger.info(String.format("%s监听到事件源:%s.", MyListener3.class.getName(), event.getSource()));}}

然后在application.properties中配置监听

context.listener.classes=com.listener.MyListener3

4. 通过@EventListener注解实现事件监听

创建MyListener4类,该类无需实现ApplicationListener接口,使用@EventListener装饰具体方法

@Componentpublic class MyListener4{Logger logger = Logger.getLogger(MyListener4.class);  // @EventListener 注解支持根据Event参数类型进行匹配@EventListenerpublic void listener(MyEvent event){logger.info(String.format("%s监听到事件源:%s.", MyListener4.class.getName(), event.getSource()));}}

PayloadApplicationEvent

有些时候我们事件传递的对象是一些简单的对象,比如一个字符串,不想继承ApplicationEvent对象,可以使用PayloadApplicationEvent

@Componentpublic class PayloadApplicationListener implements ApplicationListener> {    @Override    public void onApplicationEvent(PayloadApplicationEvent event) {        System.out.println(event.getPayload());    }}
    public static void main(String[] args) {        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(AppConfig.class);        //applicationContext.publishEvent(new InitializePost(applicationContext, "Y"));        applicationContext.publishEvent("hello world");        //applicationContext.publishEvent(new C());    }

运行结果

hello world

来源地址:https://blog.csdn.net/ToBeMaybe_/article/details/130220766

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SpringBoot 监听器

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

SpringBoot 监听器

介绍 Spring的监听器也可以说是一种观察者模式,它能实现事件与事件监听者直接的解耦,在Spring中监听器的实现主要有一下重要组件: ApplicationListener:事件监听者,观察者;ApplicationEvent:Spri
2023-08-17

SpringBoot中如何使用监听器

今天小编给大家分享一下SpringBoot中如何使用监听器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.监听器web监听
2023-06-29

SpringBoot监听器模式怎么实现

本篇内容介绍了“SpringBoot监听器模式怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!我们来以应用启动事件:Applicati
2023-07-02

springboot事件监听器怎么使用

本篇内容介绍了“springboot事件监听器怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!引导案例下面看一个简单的案例,@Conf
2023-07-02

SpringBoot监听器模式实例分析

本篇内容主要讲解“SpringBoot监听器模式实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot监听器模式实例分析”吧!1、事件ApplicationEventAppl
2023-07-02

springboot怎么监听端口请求

在Spring Boot中,可以使用内置的Tomcat服务器来监听端口请求。以下是一种常见的方式:1. 在pom.xml文件中添加Tomcat的依赖:```xmlorg.springframework.bootspring-boot-sta
2023-10-11

Spring/SpringBoot 事件监听机制是什么

本篇文章给大家分享的是有关Spring/SpringBoot 事件监听机制是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。事件监听机制可以理解为是一种观察者模式,有数据发布
2023-06-17

SpringBoot事件发布和监听的示例分析

这篇文章主要介绍SpringBoot事件发布和监听的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!概述ApplicationEvent以及Listener是Spring为我们提供的一个事件监听、订阅的实现,内
2023-06-25

SpringBoot使用过滤器、拦截器和监听器的案例代码(Springboot搭建java项目)

这篇文章主要介绍了SpringBoot使用过滤器、拦截器和监听器(Springboot搭建java项目),本文是基于Springboot搭建java项目,结合案例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-02-02

jQuery删除live监听器

在开发Web应用程序时,使用自定义事件调度器并添加监听器是非常常见的。 jQuery是一个非常流行的JavaScript库,其中有一个非常强大的事件系统,它让开发者可以在DOM元素上添加监听器,同时处理DOM元素触发的事件。使用这些事件监听器,我们可以执行一些动作,比如发送AJAX请求、将数据推送到服务端等操作。然而,开发人员还需要知道如何正确地从DOM元素中删除监听器。本文将
2023-05-18

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录