【Springboot】Springboot监听器Demo
/**
* @author: yq
* @date: 2020/8/31 0:01
* @description 自定义事件
*/
@Data
public class MyEvent extends ApplicationEvent { private String brands;
/**
* Create a new ApplicationEvent.
*
* @param source the object on which the event initially occurred (never {@code null})
*/
public MyEvent(Object source,String brands) {
super(source);
this.brands=brands; }
}
@Slf4j
@RestController
@RequestMapping("demo")
public class MyController { @Autowired
private ApplicationContext applicationContext; @GetMapping("test")
public String test() {
System.out.println("===========开始测试===========");
System.out.println("开始发布事件");
applicationContext.publishEvent(new MyEvent(this,"奔驰"));
System.out.println("结束发布事件");
System.out.println("===========结束测试===========");
return "Success";
} @EventListener
public void accept(MyEvent event){
System.out.println("开始监听事件");
String brands = event.getBrands();
System.out.println("获取事件结果 ".concat(brands));
System.out.println("结束监听事件");
}
}
注意使用监听器监听事件,会阻塞主线程,这里使用使用异步处理做一下优化
@Slf4j
@RestController
@RequestMapping("demo")
public class MyController { @Autowired
private ApplicationContext applicationContext; @GetMapping("test")
public String test() {
System.out.println("===========开始测试===========");
System.out.println("开始发布事件");
applicationContext.publishEvent(new MyEvent(this,"奔驰"));
System.out.println("结束发布事件");
System.out.println("===========结束测试===========");
return "Success";
} @Async //异步处理的注解
@EventListener
public void accept(MyEvent event){
System.out.println("开始监听事件");
String brands = event.getBrands();
System.out.println("获取事件结果 ".concat(brands));
//这里睡眠4s 是为了验证主线程不会阻塞
try {
Thread.sleep(4000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("结束监听事件");
}
}
@EnableAsync //注意启动类上必须加上EnableAsync注解,才能激活@Async注解
@SpringBootApplication
public class DemoApplication { public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args); } }
https://blog.csdn.net/weixin_42323802/article/details/84981153
【Springboot】Springboot监听器Demo的更多相关文章
- Spring源码之Springboot中监听器介绍
https://www.bilibili.com/video/BV12C4y1s7dR?p=11 监听器模式要素 事件 监听器 广播器 触发机制 Springboot中监听模式总结 在SpringAp ...
- SpringBoot事件监听器源码分析
本文涉及到Spring的监听器,如果不太了解请先阅读之前的Spring监听器的文章. SpringBoot事件监听器初始化 SpringBoot中默认定义了11个事件监听器对象,全部定义在META-I ...
- springboot配置监听器、过滤器和拦截器
监听器:listener是servlet规范中定义的一种特殊类.用于监听servletContext.HttpSession和servletRequest等域对象的创建和销毁事件.监听域对象的属性发生 ...
- springBoot+mybatisPlus小demo
项目介绍:采用restful api进行接口规范 / 项目框架SpringBoot+mybatis Plus / 采用mysql进行数据存储 / 采用swaggerUI进行前后端业务分离式开发. 开发 ...
- Java学习之SpringBoot整合SSM Demo
背景:在Java Web中Spring家族有着很重要的地位,之前JAVA开发需要做很多的配置,一堆的配置文件和部署调试一直是JavaWeb开发中的一大诟病,但现在Spring推出了SpringBoot ...
- 第2章 构建springboot工程 2-1 构建SpringBoot第一个demo
以后的趋势肯定是以一个微服务为主导的, Spring-Boot的指导 Maven整个环境构建之前的整个项目其实是一个很普通的J2SE项目,它构建完之后会进行重构,重构为Maven的一个项目路径.可以看 ...
- SpringBoot整合Swagger2(Demo示例)
写在前面 由于公司项目采用前后端分离,维护接口文档基本上是必不可少的工作.一个理想的状态是设计好后,接口文档发给前端和后端,大伙按照既定的规则各自开发,开发好了对接上了就可以上线了.当然这是一种非常理 ...
- 构建SpringBoot第一个Demo
使用官方地址生成项目 https://start.spring.io Generate:可以选择Maven或者Gradle构建项目 语言:我想一般都是Java 接下来选择SpringBoot的版本, ...
- Springboot演示小Demo
模拟数据库演示springboot小测试 1.编写一个实体类:user package com.wisezone.test; import java.io.Serializable; public c ...
随机推荐
- 剑指 Offer 51. 数组中的逆序对 + 归并排序 + 树状数组
剑指 Offer 51. 数组中的逆序对 Offer_51 题目描述 方法一:暴力法(双层循环,超时) package com.walegarrett.offer; /** * @Author Wal ...
- iot漏洞mips汇编基础
1 基础概念 MIPS(Microprocessor without Interlocked Piped Stages architecture),是一种采取精简指令集(RISC)的处理架构,由MIP ...
- 再来认识一下 Java 序列化
前言 在面试中,Java 序列化被问到的几率还是挺高的.所以搜集了 Java 序列化常见的问题,由浅入深的帮助大家进一步学习和理解. 序列化基础知识 什么是序列化? Java 序列化是 JDK 1.1 ...
- [unknown source] 快乐树
一.题目 题目描述 有一棵 \(n\) 个节点的数,每个点有点权 \(a_i\),定义一条路径的权值为路径上所有点的异或和,求所有路径的权值和,有 \(q\) 次修改,每次改一个点的点权. 数据范围 ...
- 总结数据科学家常用的Python库
概述 这篇文章中,我们挑选了24个用于数据科学的Python库. 这些库有着不同的数据科学功能,例如数据收集,数据清理,数据探索,建模等,接下来我们会分类介绍. 您觉得我们还应该包含哪些Python库 ...
- 从yield到yield from再到python协程
yield 关键字 def fib(): a,b = 0,1 while 1: yield b a,b = b,a+b yield是在:PEP 255 -- Simple Generators 这个p ...
- python实现顺序表
python实现顺序表可以有两中形式进行存储 列表 元组 其实简单来说,顺序表无非就是操作列表和元组的方法来对顺序表进行操作. 实例代码 7 class SqList: 8 def __init__( ...
- warpperspective 透视变化的opencv实现
warpperspective 透视变化的opencv2.0实现 1st-------2nd | | | | | |3rd-------4th 原始代码 cv::Mat sr ...
- 尝试做一个.NET简单、高效、避免OOM的Excel工具
Github : https://github.com/shps951023/MiniExcel 简介 我尝试做一个.NET简单.高效.避免OOM的Excel工具 目前主流框架大多将资料全载入到记忆体 ...
- 你要 if 还是 case 呢?-- Shell十三问<第十二问>
你要 if 还是 case 呢?-- Shell十三问<第十二问> 还记得我们在第 10 章所介绍的 return value 吗? 是的,接下来介绍的内容与之有关,若你的记忆也被假期的欢 ...