美文网首页
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