Spring 事务传播机制是指,包含多个事务的方法在相互调用时,事务是如何在这些方法间传播的 。
既然是“事务传播”,所以事务的数量应该在两个或两个以上,Spring 事务传播机制的诞生是为了规定多个事务在传播过程中的行为的 。比如方法 A 开启了事务,而在执行过程中又调用了开启事务的 B 方法,那么 B 方法的事务是应该加入到 A 事务当中呢?还是两个事务相互执行互不影响,又或者是将 B 事务嵌套到 A 事务中执行呢?所以这个时候就需要一个机制来规定和约束这两个事务的行为,这就是 Spring 事务传播机制所解决的问题 。
Spring 事务传播机制有哪些?Spring 事务传播机制可使用 @Transactional(propagation=Propagation.REQUIRED) 来定义,Spring 事务传播机制的级别包含以下 7 种:
- 【面试突击87:说一下 Spring 事务传播机制?】Propagation.REQUIRED:默认的事务传播级别,它表示如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务 。
- Propagation.SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行 。
- Propagation.MANDATORY:(mandatory:强制性)如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常 。
- Propagation.REQUIRES_NEW:表示创建一个新的事务,如果当前存在事务,则把当前事务挂起 。也就是说不管外部方法是否开启事务,Propagation.REQUIRES_NEW 修饰的内部方法会新开启自己的事务,且开启的事务相互独立,互不干扰 。
- Propagation.NOT_SUPPORTED:以非事务方式运行,如果当前存在事务,则把当前事务挂起 。
- Propagation.NEVER:以非事务方式运行,如果当前存在事务,则抛出异常 。
- Propagation.NESTED:如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于 PROPAGATION_REQUIRED 。
文章插图
看到这里,有人可能会说:说了这么多,我也看不懂啊,即使看懂了,我也记不住啊?这要咋整?
没关系,接下来我们用一个例子,来说明这 3 类事务传播机制的区别 。
以情侣之间是否要买房为例,我们将以上 3 类事务传播机制可以看作是恋爱中的 3 类女生类型:
- 普通型
- 强势型
- 懂事型
经验总结扩展阅读
- 如何评价小说阴阳刺青师
- 关于2021年来了心情说说短语
- 法拉第的名言
- 普通话考试命题说话三分钟多少字
- 灵尊之子司进小说叫什么
- 十月围城这小说谁写的十万火急
- 心情不好的抖音说说
- 关于乐谱的一个简单的知识
- 厨房吊顶用什么颜色好
- 晚安唯美正能量句子