多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()函数

posted @ 2018-03-09 19:40  車輪の唄  阅读(12)  评论(0编辑  收藏  举报  来源