在CSDN上看到的有关事务传播性的疑问

img


如果在原来代码基础上save方法加一个事务注解,我知道是删除和插入都回滚。但是如果在save方法加事务注解,然后在userService1.delete()外面套一个try catch,这样会怎么样啊?

很遗憾,默认场景下还是都会回滚,delete方法执行完抛出异常,会将一个回滚标记写入到connectHolder,在一个事务中,复用同一个connectHolder,当你执行到save方法时,虽然整个方法执行完没有抛出异常,也会顺利走到事务管理器的commit方法,但是这里还是会引导到回滚的api中,不过你可以自己构造事务管理器,覆盖shouldCommitOnGlobalRollbackOnly方法,让他不走回滚

img