ApplicationContext发布、处理、监听

ApplicationContext中的事件处理是通过ApplicationEvent类和ApplicationListener接口来提供的,通过ApplicationContext的publishEvent()方法发布到ApplicationListener;

在这里包含三个角色:被发布的事件,事件发布者,事件的监听者。
事件发布者在发布事件的时候 =》 通知事件的监听者。

1.要发布的事件

public class OrderEvent extends ApplicationEvent {
 
    private Order order;
 
    public UseVoucherCodesEvent(Order order) {
        super(order);
        this.order = order;
    }
}

2.发布事件

this.applicationContext.publishEvent(new OrderEvent(order));

3.处理事件

@Slf4j
@Component
@Transactional
public class OrderListener implements ApplicationListener<OrderEvent> {
    @Override
    public void onApplicationEvent(OrderPayFinishEvent event) {
        //todo 处理业务逻辑
    }
}

或者使用@EventListener处理监听事件

@Slf4j
@Component
@Transactional
public class OrderListener {
    @EventListener(classes = OrderPayFinishEvent.class)
    public void onApplicationEvent(OrderPayFinishEvent event) {
        //todo 处理业务逻辑
    }
}
posted @ 2021-08-16 10:41  aBiu--  阅读(330)  评论(0编辑  收藏  举报