返回顶部
首页 > 资讯 > 精选 >SpringBoot中ApplicationEvent和ApplicationListener怎么使用
  • 748
分享到

SpringBoot中ApplicationEvent和ApplicationListener怎么使用

2023-07-05 11:07:51 748人浏览 薄情痞子
摘要

本篇内容主要讲解“SpringBoot中ApplicationEvent和ApplicationListener怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“springBoot中App

本篇内容主要讲解“SpringBoot中ApplicationEvent和ApplicationListener怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习springBoot中ApplicationEvent和ApplicationListener怎么使用”吧!

在这个模型中,有两个重要的类,一个是事件,一个是监听。事件要继承ApplicationEvent类,监听要实现ApplicationListener接口。

一、开发ApplicationEvent事件

事件其实就是我们要发送的消息体,这个一般要根据我们的实际业务进行封装,需要什么类型的数据,就是用什么类型,需要哪些字段就添加哪些字段。我们来给一个案例。

package com.lsqingfeng.springboot.applicationEvent; import lombok.Getter;import lombok.Setter;import org.springframework.context.ApplicationEvent; @Getter@Setter@ToStringpublic class MyApplicationEvent extends ApplicationEvent {     private Integer age;     private String name;         public MyApplicationEvent(Object source, String name, Integer age) {        super(source);        this.name = name;        this.age = age;    }}

二、 开发监听器

监听器就相当于我们的MQ的消费者,当有时间推送过来的时候,监听器的代码就可以执行。这里通过泛型来设置好我们的事件类型。

package com.lsqingfeng.springboot.applicationEvent; import org.springframework.context.ApplicationListener;import org.springframework.stereotype.Component; @Componentpublic class MyApplicationEventListener implements ApplicationListener<MyApplicationEvent> {     @Override    public void onApplicationEvent(MyApplicationEvent event) {        System.out.println("收到消息:" + event);    }}

三、推送事件

推送事件需要使用ApplicationEventPublisher。这个对象在Spring容器加载的时候就已经在容器中了。所以我们可以直接注入使用,也可以使用ApplicationContext,因为ApplicationContext本身就继承了ApplicationEventPublisher。 我们通过一个Controller来验证一下。

package com.lsqingfeng.springboot.controller; import com.lsqingfeng.springboot.applicationEvent.MyApplicationEvent;import com.lsqingfeng.springboot.base.Result;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.ApplicationContext;import org.springframework.WEB.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController; @RestController@RequestMapping("event")public class ApplicationEventController {     @Autowired    private ApplicationContext applicationContext;     @RequestMapping("/push")    public Result pushEvent(){        MyApplicationEvent myApplicationEvent = new MyApplicationEvent(this,"zhangsan", 10);        applicationContext.publishEvent(myApplicationEvent);        return Result.success();    }     @RequestMapping("/push3")    public Result pushEvent2(){        applicationContext.publishEvent("大家好");        return Result.success();    }}

我们定义两个推送的方法。一个推送我们的MyApplicationEvent类型,还有一个方法推送一个字符串

当我们调用第一个方法的时候,控制台可以打印出我们推送的数据信息。

SpringBoot中ApplicationEvent和ApplicationListener怎么使用

调用推送字符串的时候,我们的监听器不会执行,原因是我们的拦截器里已经加了泛型MyApplicationEvent,也就是只会监听MyApplicationEvent类型的消息。其他类型的消息不会被监听到。

那如果我们把泛型去掉会有什么效果呢,我们来试试。

SpringBoot中ApplicationEvent和ApplicationListener怎么使用

每次推送都会发送两条(可能有什么内部机制,不管了),但是两个都打印了,说明如果不加泛型,不管谁推,这边都能收到消息。

四、注解方式实现监听器

除了上面的通过实现接口的方式开发监听器,我们还可以通过注解的方式来实现,具体代码如下。

package com.lsqingfeng.springboot.applicationEvent; import org.springframework.context.event.EventListener;import org.springframework.stereotype.Component; @Componentpublic class MyApplicationEventListener2 {     @EventListener    public void onEvent(MyApplicationEvent event){        System.out.println("收到消息2:" + event);    }}

这里加入了@EventListener 注解代表了这是一个监听器。方法名随意,方法里的参数代表监听的事件类型。

再次调用push方法:

SpringBoot中ApplicationEvent和ApplicationListener怎么使用

发现两个监听器的数据都会打印。这一特点大家要注意一下。

到此,相信大家对“SpringBoot中ApplicationEvent和ApplicationListener怎么使用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: SpringBoot中ApplicationEvent和ApplicationListener怎么使用

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

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

猜你喜欢
  • SpringBoot中ApplicationEvent和ApplicationListener怎么使用
    本篇内容主要讲解“SpringBoot中ApplicationEvent和ApplicationListener怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot中App...
    99+
    2023-07-05
  • SpringBoot中ApplicationEvent和ApplicationListener用法小结
    目录一、开发ApplicationEvent事件二、 开发监听器三、推送事件四、注解方式实现监听器对不起大家,昨天文章里的告别说早了,这个系列还不能就这么结束。 我们前面的文章中讲解...
    99+
    2023-03-09
    Spring Boot ApplicationEvent用法 Spring Boot ApplicationEvent
  • 基于SpringBoot怎么应用ApplicationEvent
    这篇文章主要介绍“基于SpringBoot怎么应用ApplicationEvent”,在日常操作中,相信很多人在基于SpringBoot怎么应用ApplicationEvent问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希...
    99+
    2023-07-05
  • SpringBoot ApplicationListener事件监听接口使用问题怎么解决
    这篇文章主要介绍“SpringBoot ApplicationListener事件监听接口使用问题怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot Ap...
    99+
    2023-07-05
  • SpringBoot和redis中怎么使用Lettuce客户端
    这篇文章给大家介绍SpringBoot和redis中怎么使用Lettuce客户端,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。重写连接工厂实例,更改其LettuceClientConfiguration 为开启拓扑更新...
    99+
    2023-06-20
  • SpringBoot中的PUT和Delete请求怎么使用
    这篇文章主要讲解了“SpringBoot中的PUT和Delete请求怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot中的PUT和Delete请求怎么使用”吧!PUT...
    99+
    2023-07-02
  • SpringBoot中怎么使用FreeMarker
    这篇文章主要介绍“SpringBoot中怎么使用FreeMarker”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot中怎么使用FreeMarker...
    99+
    2024-04-02
  • SpringBoot中banner怎么使用
    这篇文章主要介绍“SpringBoot中banner怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot中banner怎么使用”文章能帮助大家解决问题。制作自己的banner第...
    99+
    2023-06-08
  • springboot中redis怎么使用
    在Spring Boot中使用Redis,可以使用以下步骤:1. 添加依赖:在`pom.xml`文件中添加Redis的依赖:```x...
    99+
    2023-09-04
    springboot redis
  • SpringBoot中@SessionAttributes怎么使用
    本文小编为大家详细介绍“SpringBoot中@SessionAttributes怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot中@SessionAttributes怎么使用”文章能帮助大家解决疑惑,下面跟着小...
    99+
    2023-07-02
  • SpringBoot中怎么使用@ConfigurationProperties
    这篇文章主要介绍“SpringBoot中怎么使用@ConfigurationProperties”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot中怎么使用@Configuratio...
    99+
    2023-07-04
  • SpringBoot中怎么使用WebSocket
    在Spring Boot中使用WebSocket可以通过以下步骤实现: 首先添加WebSocket依赖: 在pom.xml文件中添...
    99+
    2024-03-07
    SpringBoot WebSocket
  • 怎么在Springboot中使用mybatis
    今天就跟大家聊聊有关怎么在Springboot中使用mybatis,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前期工作1.导入mybatis整合依赖<!-- &nb...
    99+
    2023-06-14
  • Redisson怎么在SpringBoot中使用
    今天就跟大家聊聊有关Redisson怎么在SpringBoot中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Redisson、Jedis、Lettuce优缺点对比(1)Redi...
    99+
    2023-06-15
  • 怎么在SpringBoot中使用nacos
    怎么在SpringBoot中使用nacos?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、什么是nacosnacos支持基于dns和基于rpc的服务发现,可以作为spri...
    99+
    2023-06-15
  • rabbitmq怎么在springboot中使用
    rabbitmq怎么在springboot中使用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。概述RabbitMQ是一个开源的消息代理和队列服务器,用来通过普通协议在完全不同的...
    99+
    2023-05-30
    springboot rabbitmq
  • Banner怎么在SpringBoot中使用
    今天就跟大家聊聊有关Banner怎么在SpringBoot中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Spring Boot在启动项目时,控制台会打印一个Spring的log...
    99+
    2023-05-30
    springboot banner
  • 怎么在Springboot中使用Thymeleaf和Jpa实现登录
    本篇文章为大家展示了怎么在Springboot中使用Thymeleaf和Jpa实现登录,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。首先要创建一个springboot项目添加以下依赖项pom.xml...
    99+
    2023-06-15
  • springboot项目中怎么使用Swagger
    今天小编给大家分享一下springboot项目中怎么使用Swagger的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、Sw...
    99+
    2023-07-05
  • springboot中encode方法怎么使用
    在Spring Boot中,可以使用PasswordEncoder接口的实现类来进行编码操作。一般来说,可以通过@Bean注解来将P...
    99+
    2024-03-07
    springboot
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作