Spring事务传播的7种机制

article/2025/9/21 2:54:00
  • Spring 事务传播机制包含以下 7 种:

1. Propagation.REQUIRED:默认的事务传播级别,它表示如果当前存在事务,则加入该事务;如果

当前没有事务,则创建一个新的事务。

2. Propagation.SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的

方式继续运行。

3. Propagation.MANDATORY:(mandatory:强制性)如果当前存在事务,则加入该事务;如果当

前没有事务,则抛出异常。

4. Propagation.REQUIRES_NEW:表示创建一个新的事务,如果当前存在事务,则把当前事务挂

起。也就是说不管外部方法是否开启事务,Propagation.REQUIRES_NEW 修饰的内部方法会新开启自己的事务,且开启的事务相互独立,互不干扰。

5. Propagation.NOT_SUPPORTED:以非事务方式运行,如果当前存在事务,则把当前事务挂起。

6. Propagation.NEVER:以非事务方式运行,如果当前存在事务,则抛出异常。

7. Propagation.NESTED:如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如

果当前没有事务,则该取值等价于 PROPAGATION_REQUIRED。

  • 以上 7 种传播行为,可以根据是否支持当前事务分为以下 3 类:

类一:支持当前事务

REQUIRED(需要有)

如果当前方法没有事务,新建一个事务,如果已经存在一个事务中,则加入这个事务中。

【类比情侣关系:有房子就一起住,没房子一起赚钱买房子。(愿意陪你吃苦的,但一定要有房子)】

SUPPORTS(可以有)

支持当前事务,如果当前没有事务,就以非事务方式执行。

【有房子一起住,没房子租房住(有的住,没房子也无所谓)】

MANDATORY(强制有)

使用当前的事务,如果当前没有事务,就抛出异常。

【有房子一起住,没房子分手(不要陪你吃苦,没房子就分手)】

类二:不支持当前事务

REQUIRES_NEW

新建事务执行,如果当前存在事务,把当前事务挂起。

【不要你的房子,咱们必须一起赚钱买房子。(不住你的房子,必须买新房子)】

NOT_SUPPORTED

以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

【不要你的房子,咱们必须一起租房子(不住你的房子,必须租房子)】

NEVER

以非事务方式执行,如果当前存在事务,则抛出异常。

【必须一起租房子,你要有房子就分手(必须一起租房子,你有房子就分手—看不上你的房子,还得陪你还房贷)】

类三:嵌套事务

NESTED

如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。

【有房子咱们以房子维根据地做点小买卖,赚钱了很好继续发展,赔钱了至少还有房子。如果没房子也没关系,一起赚钱买房子(无风险创业,保本懂事型情侣)】

【注:这里的“房子”指的就是事务】

嵌套事务(NESTED)和加入事务(REQUIRED)的区别:

  • 整个事务如果全部执行成功,二者的结果是一样的。

  • 如果事务执行到一半失败了,那么加入事务整个事务会全部回滚;而嵌套事务会局部回滚,不会影

响上一个方法中执行的结果。


http://chatgpt.dhexx.cn/article/FMJ2tTIk.shtml

相关文章

事务的传播机制

目录 1.形象说明: 2.代码演示: 2.1 REQUIRED 2.1.1 验证共用一个事务 2.1.2 验证当前没有事务,就新建一个事务 2.2 SUPPORTS 2.2.1 支持使用当前事务 2.2.2 如果当前事务不存在,则不使用事务 2.3 MANDATORY 2.3.1 支持…

Spring事务传播机制详解

前言: Spring的事务,也就是数据库的事务操作,符合ACID标准,也具有标准的事务隔离级别。 但是Spring事务有自己的特点,也就是事务传播机制。 所谓事务传播机制,也就是在事务在多个方法的调用中是如何传递的&…

反射原理详谈

什么是反射? 反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言…

Java反射的作用与原理

Java反射的作用与原理 定义 反射机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。在Java中,只要给定类…

彻底搞懂java反射技术及其原理

概述:反射是java中最强大的技术之一,很多高级框架都用到了反射技术,面试中也是经常问的点,所以搞懂反射非常重要! 文章目录 1.反射是什么?2.反射的底层原理3.三种方式获取Class对象4.反射的优缺点5.反射的应用场景6.反射的常用API 1.反射是什么? java反射机制指…

java反射原理-重要

一,反射是什么(反射是框架设计的灵魂) 1,JAVA反射机制是在运行状态中 对于任意一个类,都能够知道这个类的所有属性和方法; 对于任意一个对象,都能够调用它的任意一个方法和属性; …

java 反射机制原理 简述

什么是反射机制? 1、在运行状态中,对于任意一个类,都能够知道这个类的属性和方法。 2、对于任意一个对象,都能够调用它的任何方法和属性。这种动态获取信息以及动态调用对象的方法的功能称为JAVA的反射。 反射的作用 1、在运行…

java反射如何实现的_Java反射实现原理

Java反射应用十分广泛,例如spring的核心功能控制反转IOC就是通过反射来实现的,本文主要研究一下发射方法调用的实现方式和反射对性能的影响。 如下为Method类中invoke方法,可以看出该方法实际是将反射方法的调用委派给MethodAccessor&#xf…

Java反射原理与使用

当类加载器将类加载进jvm之后,jvm会创建每一个类的元数据对象(Class),这个元数据对象(Class)记录着这类的所有信息,java语言允许通过元数据对象动态的创建对象实例,这种机制就称为java的反射机制,基本上所有框架的底层都用到了反射机制,spring、mybatis、servlet都用到了 1.如…

Java反射原理简析

Java的反射机制允许我们动态的调用某个对象的方法/构造函数,获取某个对象的属性等,而无需在编码时确定调用的对象。这种机制在我们常用的框架中也非常常见。 1.原理简介 类actionClass Class.forName(“ MyClass”); 对象actio…

java反射原理

一、反射机制 在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态(在运行时)获取类的信息以及动态调用对象的方法的功能称为java语言的反射机制。简单来说,就是Java对每一个类和类中的所有成…

Java反射(原理剖析与使用)

一、反射机制是什么 1、Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息。 2、Java属于先编译再运行的语言&a…

java反射机制原理详解

Java反射机制是指在运行时动态地获取一个类的信息并能够操作该类的属性和方法的能力。Java反射机制使得程序能够在运行时借助Class类的API来操作自身的属性和方法,从而大大增强了Java的灵活性和可扩展性。本文将详细介绍Java反射机制的原理以及如何使用它。 1、反射…

Java 反射及原理

反射,指的是对于任意一个类,都可以动态的获得它的所有属性和方法,对于任意一个对象都能调用的它的所有属性和方法,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。…

回车、换行、回车换行、硬回车以及软回车

回车、换行、回车换行、硬回车以及软回车 要想一句话说清楚它们之间的关系,不太简单。但认真看完后,会发现它们之间的关系其实也挺简单的。 回车、换行与回车换行 英文缩写对应按键英文全称中文名称解释转义表达式使用平台CRreturnCarriage Return回车…

图解回车和换行的区别

文章目录 1. 定义2. 图解3. 讨论4. 结论 1. 定义 中文英文简写HEXCharacterASCII回车Carriage returnCR0x0D\r13换行Line feedLF0x0A\n10 2. 图解 Win11 Experiment by Pycharm with Python 3.9 print(---)print(Hello World)print(---)# \rprint(Hello \r World)print(---…

不同系统下回车和换行的区别

在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面…

python回车和换行的区别_回车与换行的区别(转)

add by zhj: 不同操作系统下换行符不同,如下: \n: UNIX \n\r: window \r: MAC OS 我们经常遇到的一个问题就是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的…

回车与换行的区别,CRLF、CR、LF详解(\r \n \r\n的区别)

先上结论 缩写ASCⅡ转义系统ASCⅡ值CR\rMacIntosh(早期的Mac)13LF\nUnix/Linux/Mac OS X10CR LF\r\nWindows 很长一段时间里,对于CRLF、CR、LF的理解仅限于不同操作系统下对换行符的定义。所谓知其然需知其所以然,从学习中找到乐…

回车符,换行符的区别

首先介绍一下“回车”(carriage return,’\r’)和“换行”(line feed,’\n’)这两个概念的来历和区别。在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒…