面试突击87:说一下 Spring 事务传播机制?( 四 )

最终执行结果,用户表和日志表都没有添加任何数据 。
执行流程描述:

  1. UserController 中调用了 UserService 的添加用户方法,UserService 使用 NESTED 循环嵌套事务,并成功执行了添加用户的方法 。
  2. UserService 中调用了 LogService 的添加方法,LogService 使用了 NESTED 循环嵌套事务,但在方法执行中出现的异常,因此回滚了当前事务 。
  3. 因为 UserService 使用的是嵌套事务,所以发生回滚的事务是全局的,也就是说 UserService 中的添加用户方法也被回滚了,最终执行结果是用户表和日志表都没有添加任何数据 。
总结Spring 事务传播机制是包含多个事务的方法在相互调用时,事务是如何在这些方法间传播的 。事务的传播级别有 7 个,支持当前事务的:REQUIRED、SUPPORTS、MANDATORY;不支持当前事务的:REQUIRES_NEW、NOT_SUPPORTED、NEVER,以及嵌套事务 NESTED,其中 REQUIRED 是默认的事务传播级别 。
是非审之于己,毁誉听之于人,得失安之于数 。
公众号:Java面试真题解析
面试合集:https://gitee.com/mydb/interview

经验总结扩展阅读