简介
说明
本文用示例介绍责任链模式的写法:Spring事件。这是SpringBoot项目中最推荐的责任链写法。
优缺点
优点
- 链上的处理类会自动注册,无需手动注册。
- 可以方便地指定链上的处理类的执行顺序。
缺点
无
实战
本处使用一个贴近真实场景的案例:订单取消时,要依次执行如下操作:退回商品的库存数量、退回用户的金额。
在这个场景中,取消订单就是调用者,账户业务和库存业务是责任链的被调用者。
项目结构:
可以看到,上边有个listener包,它就是链上的各个处理者,调用取消订单接口时就会按顺序调用链里的一系列处理逻辑。
代码
此内容仅限VIP查看,请先登录
测试
访问接口
启动项目后,访问Knife4j(接口文档)的地址:http://localhost:8080/doc.html
(当然,你用postman也完全可以)
结果
库存业务开始处理订单取消。接收到的消息:CancelOrderBO(orderNo=2255) 账户业务开始处理订单取消。接收到的消息:CancelOrderBO(orderNo=2255)
注意事项
此方法要慎用!因为它有坑,详见:Spring Event-踩坑(注意事项) – 自学精灵
请先
!