@Autowired ApplicationEventPublisher eventPublisher;
//訂單準備工做完成 , 使訂單生效 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; } }
/** * 使訂單生效 * * @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 ) }