spring事件的订阅发布,适用业务解耦合
使用场景:新用户注册之后,需要发放优惠券;一个订单服务在接收到新订单时发布一个“订单已创建”事件,库存服务和通知服务分别订阅该事件;日志和监控;实时通知系统;异步数据处理;微服务通信;
创建事件:根据具体业务创建需要的实体
/**
* 创建事件
*/
public class CleaningBoxEvent {
private String message;
public CleaningBoxEvent(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
}
创建观察者 :执行具体业务的业务逻辑
@Component
public class CleaningBoxEventListener {
@EventListener
public void handleCustomEvent(CleaningBoxEvent event) {
System.out.println("Received custom event: " + event.getMessage());
// 在这里执行观察者的业务逻辑
}
}
发布事件 :注入bean
/**
* 发布事件
*/
@Component
public class EventPublisherService {
@Autowired
private ApplicationEventPublisher applicationEventPublisher;
public void publishCustomEvent(String message) {
CleaningBoxEvent customEvent = new CleaningBoxEvent(message);
applicationEventPublisher.publishEvent(customEvent);
}
}
执行订阅发布:引用事件的方法
/**
*执行订阅发布
*/
public void doSomethingAndPublishEvent() {
// 发布事件 //returnByList.size()
eventPublisherService.publishCustomEvent("自动清箱完成数量:");
}
执行:doSomethingAndPublishEvent();