Spring 事务传播机制是指,包含多个事务的方法在相互调用时,事务是如何在这些方法间传播的 。
既然是“事务传播”,所以事务的数量应该在两个或两个以上,Spring 事务传播机制的诞生是为了规定多个事务在传播过程中的行为的 。比如方法 A 开启了事务,而在执行过程中又调用了开启事务的 B 方法,那么 B 方法的事务是应该加入到 A 事务当中呢?还是两个事务相互执行互不影响,又或者是将 B 事务嵌套到 A 事务中执行呢?所以这个时候就需要一个机制来规定和约束这两个事务的行为,这就是 Spring 事务传播机制所解决的问题 。
Spring 事务传播机制有哪些?Spring 事务传播机制可使用 @Transactional(propagation=Propagation.REQUIRED) 来定义,Spring 事务传播机制的级别包含以下 7 种:
- Propagation.REQUIRED:默认的事务传播级别,它表示如果当前存在事务,则加入该事务;如果当前没有事务 , 则创建一个新的事务 。
- Propagation.SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行 。
- Propagation.MANDATORY:(mandatory:强制性)如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常 。
- Propagation.REQUIRES_NEW:表示创建一个新的事务 , 如果当前存在事务 , 则把当前事务挂起 。也就是说不管外部方法是否开启事务,Propagation.REQUIRES_NEW 修饰的内部方法会新开启自己的事务 , 且开启的事务相互独立,互不干扰 。
- Propagation.NOT_SUPPORTED:以非事务方式运行 , 如果当前存在事务,则把当前事务挂起 。
- Propagation.NEVER:以非事务方式运行,如果当前存在事务,则抛出异常 。
- Propagation.NESTED:如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于 PROPAGATION_REQUIRED 。
文章插图
看到这里,有人可能会说:说了这么多 , 我也看不懂?。词箍炊?nbsp;, 我也记不住?。空庖φ?
没关系,接下来我们用一个例子 , 来说明这 3 类事务传播机制的区别 。
以情侣之间是否要买房为例,我们将以上 3 类事务传播机制可以看作是恋爱中的 3 类女生类型:
- 普通型
- 强势型
- 懂事型
文章插图
支持当前事务的“女生”,这里的事务指的是“房子” , 它分为 3 种(普通型女生):
- Propagation.REQUIRED(需要有房子):有房子了咱们一起?。环孔恿嗽勖且黄鹱蚍孔?。
- Propagation.SUPPORTS(可以有房子):有房子了就一起住 , 没房子了咱们就一起租房子 。
- Propagation.MANDATORY(强制有房子):有房子了就一起?。?没房子了就分手 。
推荐阅读
- 好看的末世召唤流小说 好看的末世召唤小说?
- 有人说:“教育是服务业,教师是服务员”,你怎么看?
- 2021学生中秋假期讲话稿
- 我是哈尔滨兴隆镇的 我们这现在的猪价是五块八 朋友们你们说猪价还能涨吗?
- 适合晚上睡觉发朋友圈的说说 适合晚上睡觉发的朋友圈句子
- 不想恋爱的句子说说心情 恋爱的句子说说心情
- 早上起床适合发朋友圈的说说 早上起床适合发朋友圈的句子
- 海伦凯勒简介100字 海伦凯勒简介
- 魔道祖师:大家最想对羡羡说的一句话是什么?
- 猫一直舔主人怎么回事 猫一直舔自己怎么回事