Spring的事务传播特性

在spring中可通过使用注解@Transcation( propagation = "传播机制")实现事务的传播,Spring中有7种传播机制

1.默认传播:PROPAGATION_REQUIRED 

  •   支持当前的事务,如果当前没有事务,就新建事务;
  •    如果当前已有事务,则合并为一个事务。

  解释:如果有个父方法A和子方法B,只要有一个带有事务,那么A和B都将拥有事务。

2.独立事务:REQUIRES_NEW

  •   如果当前已拥有事务,则把当前事务挂起,新建事务
  •   该机制下的事务不受其它调用者事务的影响

  解释:如果有个父方法A(有事务)和子方法B(有事务),如果A抛出异常,而B使用了这个声明事务,那么B仍会继续提交(不受A事务影响)

3.NESTED

  •  如果当前存在事务,它将会成为父级的一个子事务,方法结束后并没有提交,只是等待父事务结束才提交。
  •  如果当前没有事务,则新建事务。
  •  如果它本身异常,父级可以捕获到它的异常,而不进行回滚。正常提交。
  •   但是如果父级异常,它必然回滚。

     解释:一切以父级事务为主

4.SUPPORTS

  •   若当前已有事务,则加入事务;
  •   若当前没有事务,则以无事务进行;

  解释:佛系事务,有就用,没有就不用了

5.NOT_SUPPORTS

  不支持事务,如果当前有事务,则把该事物挂起

6.MAMDATORY

  •   若当前有事务,则运行当前事务;
  •   若当前没有实物,则抛异常;

  解释:父级若没有事务,就不干了

7.NEVER

  有事务就抛异常

当你发现自己的才华撑不起野心时,就请安静下来学习吧
原文地址:https://www.cnblogs.com/smallVampire/p/12777644.html