多service事务嵌套
1. 多service嵌套, 事务以最外层为主, 只要任一层有异常抛出, 事务就会回滚, 也就是任一层sql都会回滚
2.如果设置某一层service屏蔽掉指定异常,不做回滚
(1) 最外层service 使用注解@Transactional(noRollbackFor=ShopCartLoseException.class)
(2) 只做(1)注解将会抛出:Transaction marked as rollback only异常, not commit. 即该事务仍然不会提交
需要在异常抛出和sql执行的交集层再次注解:@Transactional(noRollbackFor=ShopCartLoseException.class) 即可
具体代码见购物车settle()函数