Spring的事务传播行为定义在enum类Propagation中:
事务类型 | 调用者有事务 | 调用者没有事务 | 回滚 | 备注 |
REQUIRED | 与调用者处于同一事务上下文中 | 新建事务 | 统一回滚 | |
SUPPORTS | 与调用者处于同一事务上下文中 | 非事务状态执行 | 统一回滚 | |
MANDATORY | 与调用者处于同一事务上下文中 | 抛出异常 | 统一回滚 | |
REQUIRES_NEW | 挂起调用者事务,并创建新的事务 | 创建新的事务 | 各自回滚 | 两个事务处于不同上下文 |
NOT_SUPPORTED | 挂起调用者事务 | 无 | 无 | 该方法以非事务状态执行 |
NEVER | 抛出异常 | 无 | 无 | 该方法以非事务状态执行 |
NESTED | 嵌套事务执行该方法 | 新建事务 | 调用者回滚,该方法回滚;该方法回滚,调用者不回滚 |