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());
        }
    }
    

代码实现(异步)

  1. 启动类添加注解@EnableAsync

  2. listener 类的方法上添加注解 @Async

以上两步即可

posted @   DAawson  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示