【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 ...
随机推荐
- 10万级etl调度软件Taskctl-web版免费授权及产品功能特性
转: 10万级etl调度软件Taskctl-web版免费授权及产品功能特性 初识Taskctl-Web版 Taskctl Free应用版原型是在原有商用版Taskctl 6.0衍生扩展开发出的专门为批 ...
- 【图像处理】使用OpenCV+Python进行图像处理入门教程(二)
这篇随笔介绍使用OpenCV进行图像处理的第二章 图像的运算,让我们踏上继续回顾OpenCV进行图像处理的奇妙之旅,不断地总结.回顾,以新的视角快速融入计算机视觉的奥秘世界. 2 图像的运算 复杂的 ...
- C++入门(3):C++开发环境搭建
本文首发 | 公众号:lunvey 既然开始学C++,电脑上应该具备它的开发环境. 而C++历史,lunvey老师觉得:初学者有兴趣可以自行了解一下,不是必要的. 大家都在用最新款的苹果手机,好用就行 ...
- python带颜色打印字符串
python带颜色打印字符串 之前调试pwn题的时候,有时候需要将某些特别的,重要的信息用不一样的颜色打印出来.查阅一些资料,了解了print函数的特性后,自己写了一个脚本,可以用来获取带颜色信息的字 ...
- 关于PHP的__construct()函数
1 <?php 2 header("Content-Type:text/html;charset=utf-8");//调整为utf-8编码格式 3 class car 4 { ...
- AtCoder Beginner Contest 186
A Brick int n, m; int main() { scanf("%d%d", &n, &m); printf("%d\n", n / ...
- MySQL入门(1)——基础操作
MySQL入门(1)--基础操作 创建数据库 创建基本数据库: create database db_admin; 创建基本数据库(等价于CREATE DATABASE): create schema ...
- All I know about A/B Test (1) : 均值型指标与比值(率)型指标的计算区别
因为最近在找实习,所以打算把自己之前学过的关数据分析的知识总结(复习)一下.在总结A/B test时,我发现中文互联网中关于A/B test的总结已经很多了,但是对于均值型指标和比值(率)型指标在设计 ...
- 【LiteOS】Liteos移植篇
目录 前言 链接 参考 笔录草稿 移植(2018) 移植获取 (Cortex-M 内核) 主要文件夹分析 移植过程 1. 拷贝文件 2. 创建工程分组 3. 添加头文件路径 4. 兼容 C99 模式 ...
- 【JVM进阶之路】七:垃圾收集器盘点
在前面,我们已经了解了JVM的分代收集,知道JVM垃圾收集在新生代主要采用标记-复制算法,在老年代主要采用标记-清除和标记-整理算法.接下来,我们看一看JDK默认虚拟机HotSpot的一些垃圾收集器的 ...