Spring Event
简介
Spring的事件(Application Event)为Bean和Bean之间的消息同步提供了支持。当一个Bean处理完成一个任务之后,希望另外一个Bean知道并能做相应的处理,这时我们就需要让另外一个Bean监听当前Bean所发生的事件。
逻辑图
-
自定义事件,继承
org.springframework.context.ApplicationEvent
-
监听事件,实现接口
org.springframework.context.ApplicationListener
-
发布消息
ApplicationEventPublisher.publishEvent(自定义事件)
作用
-
高内聚,低耦合
-
代码可读性强、方便维护
-
可扩展性、灵活性
代码实现(同步)
-
自定义事件
public class OrderCreateEvent extends ApplicationEvent { private final Order order; public OrderCreateEvent(Object source,Order order) { super(source); this.order = order; } public Order getOrder() { return order; } }
-
发布事件
@Service public class OrderServiceImpl implements OrderService { @Resource private ApplicationEventPublisher applicationEventPublisher; @Override public void createOrder(Order order) { // 模拟创建订单 // 发布订单创建事件 OrderCreateEvent orderCreateEvent = new OrderCreateEvent(this, order); applicationEventPublisher.publishEvent(orderCreateEvent); } }
-
监听事件
@Component public class OrderCreatedEventListener { /** * 注入其他业务 */ /** * 监听订单事件 * @param event */ @EventListener public void onApplicationEvent(OrderCreateEvent event) { System.out.println("订单创建事件监听器:" + event.getOrder().getOrderNo()); } }
代码实现(异步)
-
启动类添加注解
@EnableAsync
-
listener 类的方法上添加注解
@Async
以上两步即可
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术