Spring 事务传播机制是指在多个事务方法相互调用的情况下,如何管理这些事务的提交和回滚。

Spring 提供了七种事务传播行为,分别是:

  1. REQUIRED(默认传播行为):如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。
  2. SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务方式执行。
  3. MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。
  4. REQUIRESNEW:创建一个新的事务,如果当前存在事务,则挂起该事务。
  5. NOTSUPPORTED:以非事务方式执行操作,如果当前存在事务,则挂起该事务。
  6. NEVER:以非事务方式执行操作,如果当前存在事务,则抛出异常。
  7. NESTED:如果当前存在事务,则在嵌套事务中执行;如果当前没有事务,则创建一个新的事务。

小结

Spring 提供了七种事务传播行为,可分为以下两类:

  1. 支持当前事务:
    1. REQUIRED 是最常用的传播行为,它表示当前方法必须在一个事务内执行,如果当前没有事务,则创建一个新的事务。
    2. SUPPORTS 表示当前方法支持事务,但不强制要求,如果当前没有事务,则以非事务方式执行。
    3. MANDATORY 表示当前方法必须在一个事务内执行,如果当前没有事务,则抛出异常。
    4. NESTED 表示当前方法必须在一个嵌套事务内执行,如果当前没有事务,则创建一个新的事务。
  2. 不支持当前事务:
    1. REQUIRESNEW 表示当前方法必须创建一个新的事务,如果当前存在事务,则挂起该事务。
    2. NOTSUPPORTED 表示当前方法以非事务方式执行,如果当前存在事务,则挂起该事务。NEVER 表示当前方法以非事务方式执行,如果当前存在事务,则抛出异常。

以上内容来自我的 《Java 面试突击训练营》,这门课程是 有着 14 年工作经验(前 360 开发工程师),9 年面试官经验的我,花费 4 年时间打磨完成的一门视频面试课

整个课程从 Java 基础到微服务 Spring Cloud、从实际开发问题到场景题应有尽有,如下图所示:

全程通过视频直播 + 录播的方式,把 Java 常见的面试题系统的过一遍,遇到一个问题,把这个问题相关的内容都给大家讲明白,并且视频支持永久更新和观看。

上完训练营的课程之后,基本可以应对目前市面上绝大部分公司的面试了,想要了解详情,加我微信:GG_Stone【备注:训练营】