公司做项目最近用到了这个时间监听,今天给大家分享一下
概念
事件监听简单来说 就是发布了一个事件后,监听该类型事件的所有监听器会触发相应的处理逻辑.
例如:当我们在做订单 支付功能的时候 ,当用户支付成功 我们发布支付成功的事件,去扣减库存,通知物流配送等一系列操作.
案例
ApplicationEventPublisher:是一个函数式接口,定义了事件发布的规范,任何的事件发布器ApplicationEventPublisher都是通过调用publishEvent来进行事件的发布
第一步 发布事件
@Autowired
private ApplicationEventPublisher publisher;
@PostMapping("/orderPay")
public void orderPay() {
//支付的业务逻辑
//.................
//传入我们需要的参数
String orderId = "1";
publisher.publishEvent(new PaySuccessEvent(this, orderId));
}
第二步 定义事件
//支付成功的事件
@Order(500)
public class PaySuccessEvent extends ApplicationEvent {
private static final long serialVersionUID = 1L;
private final String orderId;
public PaySuccessEvent(Object source, String orderId) {
super(source);
this.orderId=orderId;
}
public String getOrderId() {
return this.orderId;
}
}
第三步 监听事件
@Async
@EventListener
public void paySuccess(PaySuccessEvent event) {
//获取参数
String orderId = event.getOrderId();
System.out.println("参数:"+orderId);
System.out.println("我支付成功了");
}
第四步 测试
如有不足 希望各位指正,谢谢大家