Spring事务重点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring事务重点相关的知识,希望对你有一定的参考价值。

Spring事务最重要三种传播

  首先声明本文只讨论这三种事务传播,分别是 PROPAGATION_REQUIRED,PROPAGATION_REQUIRED_NEW,PROPAGATION_NESTED。

  背景:我们在设计业务时不可能所有的业务操作都是自己写完,放在一个方法中,有时候需要调用其他方法,其他同事的代码。这种情况下需要我们考虑事务的传播性。

A方法事务是REQUIRED,我们讨论的对象是B方法调用应该采用哪种事务

  1. PROPAGATION_REQUIRED,最常使用的事务。场景:业务A方法调用B方法。A已经是REQUIRED事务,B采用PROPAGATION_REQUIRED,分为两种情况考虑,第一种:A成败对B有没有影响,答案是有,A方法发生异常引起回滚操作会影响B方法的操作结果无效。第二种:B的成败对A有没有影响。答案是有,B方法发生异常引起回滚操作会影响A方法的操作结果无效。B和A是同失败同成功这个是最常见的逻辑。
  2. PROPAGATION_REQUIRED_NEW,场景:业务A方法调用B方法。A已经是REQUIRED事务,B采用PROPAGATION_REQUIRED_NEW,分为两种情况考虑,第一种:A成败对B有没有影响,答案需要细说,A方法发生异常引起回滚操作在调用B之前肯定会导致B不能调用,A发生异常在B方法之后对B无影响。第二种:B的成败对A有没有影响。答案需要细说,B方法发生异常引起回滚操作A对异常进行了捕获处理,这种情况不会影响A。B方法发生异常引起回滚操作A没有对异常进行了捕获处理,A的操作也会回滚。
  3. PROPAGATION_NESTED,场景:业务A方法调用B方法。A已经是REQUIRED事务,B采用PROPAGATION_NESTED,分为两种情况考虑,同PROPAGATION_REQUIRED_NEW情况。特殊说明,当B方法事务提交完成时是把B方法之前包括A的操作进行提交。当B回滚时只是B自己回滚不会影响到A的操作。

以上是关于Spring事务重点的主要内容,如果未能解决你的问题,请参考以下文章

spring的事务操作(重点)

面试重点-spring事务管理的全面了解

spring spring事务操作

spring spring事务操作

spring学习 ———— spring事务操作

一文详解Spring事务注解的解析,这下你总懂了吧?