美文网首页
spring ApplicationEvent事件发布

spring ApplicationEvent事件发布

作者: 饱饱想要的灵感 | 来源:发表于2023-05-29 20:11 被阅读0次

ApplicationEventPublisher是Spring框架提供的一个接口,用于向应用程序内部的其他组件发布事件。它定义了一个方法publishEvent,该方法接受一个实现了ApplicationEvent接口的事件对象作为参数,可以将该事件传递给所有注册了监听该事件的监听器。

下面是一个使用ApplicationEventPublisher的示例代码:

@Service
public class OrderService {

    @Autowired
    private ApplicationEventPublisher publisher;

    public void createOrder(Order order) {
        // 创建订单逻辑

        // 发布订单创建事件
        OrderCreatedEvent event = new OrderCreatedEvent(order);
        publisher.publishEvent(event);
    }
}

在这个示例中,OrderService类通过@Autowired注解获取了一个ApplicationEventPublisher对象。当创建订单时,它会创建一个OrderCreatedEvent事件对象,并通过publishEvent方法将该事件发布到应用程序中。

然后事件处理有2种方式,实现接口 ApplicationListener<OrderCreatedEvent> 或使用注解 @EventListener

  1. 使用实现 ApplicationListener 接口的方式
    需要重写 onApplicationEvent() 方法,实现对事件的监听和逻辑处理,例如:
public class OrderEventListener implements ApplicationListener<OrderCreatedEvent> {

    @Override
    public void onApplicationEvent(OrderCreatedEvent event) {
        // 监听到OrderCreatedEvent事件后的逻辑处理
        ...
    }

}
  1. 通过 @EventListener 注解的方式
    需要将方法标记为Spring事件监听的回调方法,例如:
@Component
public class OrderEventListener2 {

    @EventListener
    public void onOrderCreated(OrderCreatedEvent event) {
        // 监听到OrderCreatedEvent事件后的逻辑处理
        ...
    }

}

可以看到,使用 @EventListener 注解的方式更加简洁清晰,不需要额外实现接口,也可以通过方法名称来区分监听不同的事件。

相关文章

网友评论

      本文标题:spring ApplicationEvent事件发布

      本文链接:https://www.haomeiwen.com/subject/ibxsedtx.html