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

SpringBoot事件驱动

1、概述

Spring事件驱动采用了观察者设计模式,主要作用就是实现对象之间的松耦合通信。它的核心思想是通过事件的发布和监听来实现不同组件之间的交互。(跟mq挺像)

基础概念:

  • 事件(Event): 在Spring中,事件是一个对象,通常是某个动作的表示,比如用户注册、订单提交等。成为事件需要继承ApplicationEvent 的类。

  • 事件监听器(Listener): 负责处理特定的事件。类上加@Componse注解,方法上加@EventListener。(如果要做异步处理 需要在方法上加异步注解,然后启动类上开启异步支持)

  • 事件发布者(Publisher): 事件发布者是负责发布事件的组件。通过ApplicationEventPublisher,或者ApplicationContext发事件。

2、示例代码

当用户下单时,可以发布一个订单事件,多个监听器可以响应这个事件,例如更新库存、发送确认邮件等。这种方式使得各个模块之间的耦合度降低,增强了系统的灵活性和可维护性。

// 定义事件
public class OrderPlacedEvent extends ApplicationEvent {
    private final Order order;

    public OrderPlacedEvent(Object source, Order order) {
        super(source);
        this.order = order;
    }

    public Order getOrder() {
        return order;
    }
}

// 监听器
@Component
public class OrderConfirmationListener{

    @Order(1) // 优先级
    @Async // 异步执行
    @EventListener
    public void onApplicationEvent(OrderPlacedEvent event) {//方法入参就是要处理的事件
        // 处理订单确认逻辑
        System.out.println("订单已确认: " + event.getOrder().getId());
    }
}

// 发布事件
@Service
public class OrderService {
    @Autowired
    private ApplicationEventPublisher publisher;

    public void placeOrder(Order order) {
        // 下单逻辑
        publisher.publishEvent(new OrderPlacedEvent(this, order));
    }
}

相关文章:

  • 翻硬币问题
  • 【Docker compose】neo4j容器安装apoc插件
  • 医疗送药机器人“空间拓扑优化+动态算法决策+多级容错控制”三重链式编程技术解析与应用
  • 【WiFi 7核心技术及未来挑战】
  • 搭建刷题专业版小程序系统
  • 【机器学习chp13--(上)】人工神经网络(MLP结构 + KAN结构 + 卷积神经网络)
  • AI Agent 时代开幕-Manus AI与OpenAI Agent SDK掀起新风暴
  • 4.2 Reactive 对象的深度类型约束方案
  • 婚恋之红娘相亲小程序开发功能与设计详解
  • 福特售后再添亮点,为烈马模块化车身改装提供专业支持
  • Qt运行xxx.so can not open shared object file
  • MacOS 上使用终端彻底格式化 U 盘
  • 介绍HTTP协议基本结构与Linux中基本实现HTTPServer
  • 如何取消GitHub Copilot订阅付费?
  • 非零初始条件系统的传递函数分析
  • Kafka的零拷贝
  • 推荐系统基础
  • 【2025】基于python+django的驾校招生培训管理系统(源码、万字文档、图文修改、调试答疑)
  • linux 命令 tree
  • 神经网络:定义与核心原理
  • 从黄土高原到黄浦江畔,澄城樱桃品牌推介会明日在上海举办
  • 韩国法院将李在明所涉案件重审日期延至大选后
  • 印度袭击巴基斯坦已致至少3人死亡
  • 巴基斯坦宣布关闭全国空域48小时
  • 无人机穿越大理崇圣寺千年古塔时“炸机”,当地:肇事者已找到,将被追责
  • 1101名优秀运动员拟保送,全红婵、黄雨婷、盛李豪在列