只是记录下开发过程遇到的问题。 前段时间接到个需求。供应链的拣货出库流程中业务已经完成拣货了,但是突然又不想用这批商品出库了。需要一个撤销的功能。撤销了要自动给他推荐这批商品在其他地方的库存,如果库存不够就变成一个中间状态。 这功能合理与否我们考虑不了,开发没人权。只需要实现它。 这里就流程来说还是比较清晰简单的。只是需要考虑推荐的时候库存不够怎么通知原本的单改变状态。因为用的是声明是事务。只需要我们自己抛出自定义的异常然后在 @Transactional 上面加上NoRollbackFor=自定义异常或者在调用这个推荐接口的地方catch掉然后设置状态就行了。 目前遇到的事务失效场景就是异常被我们主动catch掉。或者添加了noRollBackFor的异常类事务会失效。 如果在注解上没有声明注解生效的异常类。默认的只会处理运行时异常和ERROR错误 源码如下
一般来说用声明时事务时都会显示的指定需滚回异常。
我们如非特殊处理一般都是Exeption一把梭。毕竟小公司。完事了