Spring事务的七种传播行为
一、什么是事务传播行为
什么叫事务传播行为?听起来挺高端的,其实很简单。
即然是传播,那么至少有两个东西,才可以发生传播。单体不存在传播这个行为。
所为的事务传播行为就是多个声明的事务的方法 相互调用的时候,这个事务该如何传递
如上图:methodA()
调用methodB()
那么这两个方法都显示了开启事务,那么methodB()
开启一个新的事务,还是继续在methodA()
这个事务里面去执行,就去决所谓的事务传播的一个行为
二、事务的传播行为有哪些?
Spring中定义了七种事务的传播行为,完整版的传播行为如下:
REQUIRED(默认)
:它是Spring里面默认的事务传播行为,也就新当前存在事务就加入到当前事务去执行,如果不存在事务就创建一个事务REQUIRE_NEW
:它不管是否存在事务,它都会新开启一个事务来执行,新老事务相互独立的,外部事务抛出异常,并不会影响内部事务的一个正常提交NESTED
:如果当前存在事务,就嵌套当前事务中去执行,如果当前没有事务,那么就新建一个事务,类似REQUIRE_NEW
这个样一个传播行为SUPPORTS
:表示支持当前当前的事务,如果当前不存在事务,就以非事务的方式去执行NOT_SUPPORT
:表示以非事务的方式来运行,如果当前存在事务,就需要把当前的事务挂起来。MANDATORY
:它是一个强制的事务执行,如果当前不存在事务就抛出一个异常NEVER
:就是以非事务的方式来执行,如果当前存在事务则抛出一个异常
Spring的事务传播级别一般是不需要去定义的,默认就是 REQUIRED
,除非在嵌套的事务情况下,需要去重点了解
到此这篇关于Spring事务的七种传播行为的文章就介绍到这了,更多相关Spring事务传播行为内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
通过springboot+mybatis+druid配置动态数据源
这篇文章主要介绍了通过springboot+mybatis+druid配置动态数据源,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下2019-06-06MyBatis-Plus中最简单的查询操作教程(Lambda)
这篇文章主要给大家介绍了关于MyBatis-Plus中最简单的查询操作的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2022-03-03Java中双重检查锁(double checked locking)的正确实现
双重检查锁(Double-Check Locking),顾名思义,通过两次检查,并基于加锁机制,实现某个功能,下面这篇文章主要给大家介绍了关于Java中双重检查锁(double checked locking)的相关资料,需要的朋友可以参考下2021-09-09java高并发ScheduledThreadPoolExecutor与Timer区别
这篇文章主要为大家介绍了java高并发ScheduledThreadPoolExecutor与Timer区别,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-10-10
最新评论