iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >SpringBoot 监听器
  • 507
分享到

SpringBoot 监听器

springbootspringjava 2023-08-17 13:08:24 507人浏览 八月长安
摘要

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

介绍

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

--结束END--

本文标题: SpringBoot 监听器

本文链接: https://www.lsjlt.com/news/372857.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • SpringBoot 监听器
    介绍 Spring的监听器也可以说是一种观察者模式,它能实现事件与事件监听者直接的解耦,在Spring中监听器的实现主要有一下重要组件: ApplicationListener:事件监听者,观察者;ApplicationEvent:Spri...
    99+
    2023-08-17
    spring boot spring java
  • SpringBoot中如何使用监听器
    今天小编给大家分享一下SpringBoot中如何使用监听器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.监听器web监听...
    99+
    2023-06-29
  • springboot事件监听器怎么使用
    本篇内容介绍了“springboot事件监听器怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!引导案例下面看一个简单的案例,@Conf...
    99+
    2023-07-02
  • SpringBoot监听器模式实例分析
    本篇内容主要讲解“SpringBoot监听器模式实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot监听器模式实例分析”吧!1、事件ApplicationEventAppl...
    99+
    2023-07-02
  • SpringBoot监听器模式怎么实现
    本篇内容介绍了“SpringBoot监听器模式怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!我们来以应用启动事件:Applicati...
    99+
    2023-07-02
  • springboot 事件监听器的案例详解
    目录前言引导案例一、通过实现ApplicationListener接口实现步骤1、自定义一个事件类(对象),继承ApplicationEvent2、自定义业务类实现Applicati...
    99+
    2024-04-02
  • springBoot + mybatis-plus 实现监听 mysql的数据增删改的监听
    在Spring Boot + MyBatis-Plus中实现MySQL数据增删改的监听,可以通过以下步骤: 添加MyBatis-Plus依赖,在pom.xml文件中添加以下依赖:       com.baomidou    mybati...
    99+
    2023-09-13
    mybatis spring boot mysql
  • springboot怎么监听端口请求
    在Spring Boot中,可以使用内置的Tomcat服务器来监听端口请求。以下是一种常见的方式:1. 在pom.xml文件中添加T...
    99+
    2023-10-11
    springboot
  • SpringBoot中使用监听器的方法详解
    目录1.监听器2.SpringBoot中监听器的使用2.1 监听Servlet上下文对象2.2 监听HTTP会话Session对象总结1.监听器 web监听器是一张Servlet中特...
    99+
    2024-04-02
  • SpringBoot事件发布和监听详解
    目录概述事件监听的结构Publisher,Event和Listener的关系事件发布者监听者总结概述 ApplicationEvent以及Listener是Spring为我们提供的...
    99+
    2024-04-02
  • SpringBoot深入分析讲解监听器模式下
    我们来以应用启动事件:ApplicationStartingEvent为例来进行说明: 以启动类的SpringApplication.run方法为入口,跟进SpringApplica...
    99+
    2024-04-02
  • SpringBoot深入分析讲解监听器模式上
    目录1、事件ApplicationEvent2、监听器ApplicationListener3、事件广播器ApplicationEventMulticaster 注:图片来源于网络 ...
    99+
    2024-04-02
  • Spring/SpringBoot 事件监听机制是什么
    本篇文章给大家分享的是有关Spring/SpringBoot 事件监听机制是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。事件监听机制可以理解为是一种观察者模式,有数据发布...
    99+
    2023-06-17
  • Spring事件发布监听,顺序监听,异步监听方式
    目录1. Spring的事件通知2. Spring事件通知使用2.1 Spring的事件2.2 事件监听2.2.1 接口方式实现2.2.2 注解实现2.3 事件发布2.4 Sprin...
    99+
    2024-04-02
  • SpringBoot如何监控Redis中某个Key的变化(自定义监听器)
    目录SpringBoot 监控Redis中某个Key的变化1.声明2.基本理念3.实现和创建监听4.基本demo的其他配置5.基本测试6.小结一下SpringBoot自定义监听器原理...
    99+
    2024-04-02
  • 如何实现Spring事件发布监听、顺序监听和异步监听
    这篇文章给大家分享的是有关如何实现Spring事件发布监听、顺序监听和异步监听的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. Spring的事件通知Spring的事件通知本质上就是发布-订阅,即生产者-消费者...
    99+
    2023-06-22
  • ApplicationListenerDetector监听器判断demo
    目录Bean实例化之后Bean销毁之前Bean实例化之后 判断Bean是否是监听器,如果是监听器就将当前Bean加入监听器集合 public Object postProcessA...
    99+
    2023-03-14
    ApplicationListenerDetector监听器 监听器判断
  • Android开发手册Chip监听及ChipGroup监听
    目录Chip监听ChipGroup监听实例效果展示Chip监听 选中状态的监听:setOnCheckedChangeListener,该监听只有设置了checkable 属性为tru...
    99+
    2024-04-02
  • SpringBoot事件发布和监听的示例分析
    这篇文章主要介绍SpringBoot事件发布和监听的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!概述ApplicationEvent以及Listener是Spring为我们提供的一个事件监听、订阅的实现,内...
    99+
    2023-06-25
  • jQuery删除live监听器
    在开发Web应用程序时,使用自定义事件调度器并添加监听器是非常常见的。 jQuery是一个非常流行的JavaScript库,其中有一个非常强大的事件系统,它让开发者可以在DOM元素上添加监听器,同时处理DOM元素触发的事件。使用这些事件监听...
    99+
    2023-05-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作