Spring 事务传播机制有哪些?
-
Spring 事务传播机制可使用 @Transactional(propagation=Propagation.REQUIRED) 来定义, Spring 事务传播机制的级别包含以下 7 种:
- REQUIRED: 默认的事务传播级别, 它表示如果当前存在事务, 则加入该事务; 如果当前没有事务, 则创建一个新的事务;
- SUPPORTS: 如果当前存在事务, 则加入该事务; 如果当前没有事务, 则以非事务的方式继续运行;
- MANDATORY: (mandatory: 强制性)如果当前存在事务, 则加入该事务; 如果当前没有事务, 则抛出异常;
- REQUIRES_NEW: 表示创建一个新的事务, 如果当前存在事务, 则把当前事务挂起。也就是说不管外部方法是否开启事务, REQUIRES_NEW 修饰的内部方法会新开启自己的事务, 且开启的事务相互独立, 互不干扰。
- NOT_SUPPORTED: 以非事务方式运行, 如果当前存在事务, 则把当前事务挂起。
- NEVER: 以非事务方式运行, 如果当前存在事务, 则抛出异常。
- NESTED: 如果当前存在事务, 则创建一个事务作为当前事务的嵌套事务来运行; 如果当前没有事,则该取值等价于REQUIRED。