Spring4 版 eventbus 事件通訊 事件驅動 介紹

開始使用

1. 事件發送器

@Autowired
    ApplicationEventPublisher eventPublisher;

2. 發送事件

//訂單準備工做完成 , 使訂單生效
    eventPublisher.publishEvent(new OrderEffectEvent(order.getId()));

例子 OrderEffectEvent類的定義(其實就是一個普通的java bean)java

public final class OrderEffectEvent implements IOrderEvent {


   @Getter
   private final String orderId;


   public OrderEffectEvent(String orderId) {
       this.orderId = orderId;


   }
}

3 在須要處理的地方接收發送的事件,使用@EventListener 註解

/**
    * 使訂單生效
    *
    * @param event 訂單生效事件
    * @return
    */
   @EventListener
   public void handlerEffectOrder(OrderEffectEvent event) {
      
      // do some thing
   }

@EventListener 還支持事件過濾,例如 下面這個例子只想接收到 訂單業務類型爲 MONTHLY 的事件spring

注意 condition 內容爲sqEl 表達式 須要返回類型爲 booleanthis

/**
    * 訂單未支付,取消業務狀態
    *
    * @param event 訂單事件
    */
   @EventListener(condition = "T(com.xxx.Order.BizType).MONTHLY eq #event.orderType")
   public void handlerEvent(OrderPayExpireEvent event) {


   }

注意 泛型也是支持的.net

/**
    *
    * @param event 新增事件
    */
   @EventListener
   public void handlerEvent(ICreateEvent event) {
       
      // switch (event)
      // if(event instanceof OrderCreateEvent )

   }

4 擴展閱讀

相關文章
相關標籤/搜索