一、说明
- 1.事务的传播特性是当一个事务方法被另一个事务方法调用时,这个事务方法该如何进行
二、传播行为
传播行为 | 外部不存在事务 | 外部存在事务 | 使用方式 |
required(默认) | 开启新事务 | 加入外部事务中 | @Transactional(propagation=Propagation.REQUIRED)适用增删改 |
supports | 不开启新事务 | 加入到外部事务中 | @Transactional(propagation=Propagation.SUPPORTS)适用查询 |
requires new | 开启新事务 | 不用外部事务,开启新事务 | @Transactional(propagation=Propagation.REQUIRES_NEW)适用内部事务和外部事务不存在业务关联的情况,例如日志 |
not supported | 不开启新事务 | 不用外部事务 | @Transactional(propagation=Propagation.NOT_SUPPORTED)不常用 |
never | 不开启新事务 | 抛出异常 | @Transactional(propagation=Propagation.NEVER)不常用 |
mandatory | 抛出异常 | 加入到外部事务中 | @Transactional(propagation=Propagation.MANDATORY)不常用 |
NESTED | 开启新事务 | 嵌套到外部事务中,savepoint机制,外层影响内层,内层不会影响外层 | @Transactional(propagation=Propagation.NESTED)不常用 |