网络舆情分析报告范文网站优化联系
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 // 异步执行@EventListenerpublic void onApplicationEvent(OrderPlacedEvent event) {//方法入参就是要处理的事件// 处理订单确认逻辑System.out.println("订单已确认: " + event.getOrder().getId());}
}// 发布事件
@Service
public class OrderService {@Autowiredprivate ApplicationEventPublisher publisher;public void placeOrder(Order order) {// 下单逻辑publisher.publishEvent(new OrderPlacedEvent(this, order));}
}