Spring-事务的传播行为有哪些?

简介: Spring-事务的传播行为有哪些?

什么是事务传播行为


什么叫事务传播行为?听起来挺高端的,其实很简单。


即然是传播,那么至少有两个东西,才可以发生传播。单体不存在传播这个行为。


所为的事务传播行为就是多个声明的事务的方法 相互调用的时候,这个事务该如何传递

image.png

如图,methodA()调用methodB()那么这两个方法都显示了开启事务,那么methodB()开启一个新的事务,还是继续在methodA()这个事务里面去执行,就去决所谓的事务传播的一个行为



事务的传播行为有哪些?


Spring中定义了七种事务的传播行为,完整版的传播行为如下:

image.png

  1. REQUIRED(默认):它是Spring里面默认的事务传播行为,也就新当前存在事务就加入到当前事务去执行,如果不存在事务就创建一个事务


  1. REQUIRE_NEW:它不管是否存在事务,它都会新开启一个事务来执行,新老事务相互独立的,外部事务抛出异常,并不会影响内部事务的一个正常提交


  1. NESTED:如果当前存在事务,就嵌套当前事务中去执行,如果当前没有事务,那么就新建一个事务,类似 REQUIRE_NEW这个样一个传播行为


  1. SUPPORTS:表示支持当前当前的事务,如果当前不存在事务,就以非事务的方式去执行


  1. NOT_SUPPORT:表示以非事务的方式来运行,如果当前存在事务,就需要把当前的事务挂起来。


  1. MANDATORY:它是一个强制的事务执行,如果当前不存在事务就抛出一个异常


  1. NEVER:就是以非事务的方式来执行,如果当前存在事务则抛出一个异常


Spring的事务传播级别一般是不需要去定义的,默认就是 REQUIRED,除非在嵌套的事务情况下,需要去重点了解




相关文章
|
7天前
|
XML Java 数据库
Spring框架第五章(声明式事务)
Spring框架第五章(声明式事务)
|
15天前
|
Java 开发者 Spring
spring事务类型,事务传递,隔离级别?
spring事务类型,事务传递,隔离级别?
|
5天前
|
存储 Java 关系型数据库
Spring事务失效的 8 大原因,这次可以吊打面试官了!
Spring事务失效的 8 大原因,这次可以吊打面试官了!
|
28天前
|
Java 关系型数据库 MySQL
Spring 事务和事务传播机制
Spring 事务和事务传播机制
Spring 事务和事务传播机制
|
28天前
|
Java 关系型数据库 MySQL
Spring 事务和事务传播机制
Spring 事务和事务传播机制
|
29天前
|
Java 数据库 Spring
Spring 事务
Spring 事务
29 1
|
16天前
|
Java Spring 容器
Spring 中一个事务方法调用另一个事务方法会怎样?
【6月更文挑战第5天】如果我们在一个包含事务的方法中,调用了另一个包含里事务的方法,那么,Spring 会创建新的事物吗?如果方法抛出异常导致事务会滚了呢?
25 0
|
23天前
|
Java 关系型数据库 MySQL
【JavaEE进阶】Spring中事务的实现
【JavaEE进阶】Spring中事务的实现
|
1天前
|
Java
springboot自定义拦截器,校验token
springboot自定义拦截器,校验token
14 6
|
2天前
|
Java 关系型数据库 MySQL
Mybatis入门之在基于Springboot的框架下拿到MySQL中数据
Mybatis入门之在基于Springboot的框架下拿到MySQL中数据
12 4