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 处理业务逻辑
}
}