Spring 中的事务传播特性
Transaction Propagation
参考: org.springframework.transaction.TransactionDefinition 的PROPAGATION_ 几个属性
汇总图
支持外层事务
REQUIRED
如果有外部事务: 使用外部的事务控制
如果没有外部事务: 创建一个新事务
默认的方式, 外部有就用, 没有就自己创建
SUPPORTS
如果有外部事务: 使用外部的事务控制
如果没有外部事务: 则不用事务执行
in short 就是随缘, 外部有就用, 没有就不用
MANDATORY
如果有外部事务: 使用外部的事务控制
如果没有外部事务: 抛出异常
in short 必须在事务内部执行, 没有外部事务则抛出异常
不支持外层事务
NOT_SUPPORTED
如果有外部事务: 挂起外部的事务(不抛异常)
如果没有外部事务:以无事务执行
in short 不支持当前事务;总是以非事务的方式执行
REQUIRES_NEW
如果有外部事务: 挂起外部的事务, 创建一个内部新事务
如果没有外部事务: 创建一个新事务
in short 必须使用新的事务
NEVER
如果有外部事务: 抛出异常
如果没有外部事务: 以无事务方式执行
in short 不允许事务执行