话不多说直接上代码
1.创建自己的event类 需要继承
org.springframework.context.ApplicationEvent
构造方法的参数根据自己需求来写
这边用了Lombok@Getter方便后续取event类的值
/**
* 更新备件库存数量事件
* @author: HouGJ
* @date: 2023/5/24 10:27
* @Description: PartBillEvent
*/
@Getter
public class PartBillEvent extends ApplicationEvent {
private static final long serialVersionUID = -7257532729709710741L;
/**
* 备件更新总dto
*/
public BillUpdateTotalDTO billUpdateTotalDTO;
public PartBillEvent(Object source, BillUpdateTotalDTO billUpdateTotalDTO) {
super(source);
this.billUpdateTotalDTO = billUpdateTotalDTO;
}
}
2.创建自己的事件监听类
需要将该类注册为Bean
在实例方法上需要添加注解,实现监听事件
org.springframework.context.event.EventListener
/**
* @author: HouGJ
* @date: 2023/5/24 10:25
* @Description: PartBillListener
*/
@Slf4j
@Component
public class PartBillListener {
@Resource
private IPartBillService billService;
/**
* 更新库存数
*
* @param event 事件
* @return {@link Boolean}
*/
@EventListener
public Boolean updateTotal(PartBillEvent event){
// 获取event里的变量
BillUpdateTotalDTO billUpdateTotalDTO = event.getBillUpdateTotalDTO();
// TODO:你要做的业务逻辑
return flag;
}
}
3.在需要的地方添加事件发布功能的接口的Bean
org.springframework.context.ApplicationEventPublisher
@Resource
private ApplicationEventPublisher applicationEventPublisher;
4.最后再你需要的地方放入使用事件发布刚开始创建的event类
applicationEventPublisher.publishEvent(new PartBillEvent(this, billUpdateTotalDTO));