当前位置: 首页 > news >正文

Spring 事件监听机制的使用

文章目录

  • 1. 创建自定义事件
  • 2. 发布事件
  • 3. 监听事件
  • 4. 异步事件

1. 创建自定义事件

事件可以是任意对象(Spring 4.2+支持POJO),或继承ApplicationEvent(旧版)。

// 自定义事件(POJO形式,无需继承ApplicationEvent)
public class OrderCreatedEvent {private String orderId;public OrderCreatedEvent(String orderId) {this.orderId = orderId;}public String getOrderId() { return orderId; }
}

2. 发布事件

通过ApplicationEventPublisher发布事件,可在Service中注入该接口。

import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;@Service
public class OrderService {private final ApplicationEventPublisher publisher;public OrderService(ApplicationEventPublisher publisher) {this.publisher = publisher;}public void createOrder(String orderId) {// 业务逻辑...// 发布事件publisher.publishEvent(new OrderCreatedEvent(orderId));}
}

3. 监听事件

使用@EventListener注解

import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;@Component
public class OrderEventListener {@EventListenerpublic void handleOrderCreated(OrderCreatedEvent event) {System.out.println("订单创建: " + event.getOrderId());// 执行后续操作,如发送邮件、更新库存等}
}

4. 异步事件

可以在启动类上加上@EnableAsync注解

@SpringBootApplication
@EnableAsync
public class App {public static void main(String[] args) {SpringApplication.run(App.class, args);}
}

在监听到消息执行对应函数的地方加上@Async注解

    @Async@EventListenerpublic void handleOrderCreated(OrderCreatedEvent event) {System.out.println("订单创建: " + event.getOrderId());System.out.println("[同步监听] 线程: " + Thread.currentThread().getName());// 执行后续操作,如发送邮件、更新库存等}
http://www.dtcms.com/a/191260.html

相关文章:

  • Spring 中的 @Configuration @Bean注解
  • UE5 像素推流
  • 在UI 原型设计中,交互规则有哪些核心要素?
  • 数值积分知识
  • 【嵌入模型与向量数据库】
  • 阿里巴巴java开发手册
  • jupeter 安装流程
  • dify 连接不上ollama An error occurred during credentials validation:
  • 基于EFISH-SCB-RK3576/SAIL-RK3576的智慧路灯控制器技术方案
  • mysql数据库配置
  • 【大模型】OpenManus 项目深度解析:构建通用 AI Agent的开源框架
  • Java—— 双列集合Map的实现类
  • 网络套接字(二)
  • vue2+ThinkPHP5实现简单大文件切片上传
  • 软件逆向基础-扫雷篇
  • copy_paste
  • 力扣-98.验证二叉搜索树
  • OA 系统办公自动化包含哪些内容,关键功能模块与操作要点说明
  • CodeBuddy 接入 MCP,一键生成网站!
  • 操作系统期末复习笔记
  • HCIP-Datacom Core Technology V1.0_1认识网络设备
  • 计算机网络:移动通信蜂窝网络指的是什么?
  • AI编程:使用Trae + Claude生成原型图,提示词分享
  • 集星云推碰一碰源码搭建的核心模块
  • 2005-2022年各省绿色信贷水平测算数据(含原始数据+计算过程+计算结果)
  • 【CSS】使用 CSS 绘制三角形
  • 【Alist+RaiDrive挂载网盘到本地磁盘】
  • 673SJBH基于ASP的公交系统
  • 电脑内存智能监控清理,优化性能的实用软件
  • UPS是什么?UPS 不间断电源有哪些适配的升压芯片?