带你读懂Spring 事务——事务的传播机制 - 知乎
Spring的事务传播机制实例 - 简书
什么是传播机制?所谓传播机制,指的就是 方法A带有事务,去调用带有事务的方法B,方法A,B事务设置的事务属性,会对方法A,B的事务产生什么影响。
前提:A调用B A是父事务,B是子事务。
| 通俗理解 | 具体介绍 | |
|---|---|---|
REQUIRED | 需要一个事务 | 如果当前B没有事务,则B自己新建一个事务,如果当前有事务,就加入当前事务。如果B中抛出异常,那么A中已经执行的操作也会回滚。 |
REQUIRES_NEW | 自己的事务必须是新的,而且只能有一个 | B创建一个新事务,如果A存在当前事务,则挂起A的事务。相当于只有B新建的事务了。 |
MANDATORY | 强制性的必须有事务 | 当前A存在事务,则加入当前事务,如果当前A事务不存在,则抛出异常。 |
SUPPORTS | B支持当前A(父事务)的事务 | 当前A存在事务,则加入当前事务,如果当前没有事务,B就以非事务方法执行。 |
NOT_SUPPORTED | B不支持当前A(父事务)的事务 | 始终以非事务方式执行,如果当前存在事务,则挂起当前事务。 |
NEVER | 不能有 | A不能有事务,否则抛异常 |
NESTED | 嵌套在A父事务中 | 如果当前A事务存在,则在嵌套事务中执行。如果不存在,就自己新建一个事务。父事务抛异常,子事务回滚,子事务抛异常,父事务不受影响。 |



