首页
学习
活动
专区
圈层
工具
发布

spring事务传播

Spring 事务的传播级别 Spring 事务传播级别与数据库事务隔离级别不同,传播分为 7 种级别: PROPAGATION_REQUIRED:Spring的默认传播级别,如果上下文中存在事务则加入当前事务...PROPAGATION_MANDATORY:该传播级别要求上下文中必须存在事务,否则抛出异常 PROPAGATION_REQUIRES_NEW:该传播级别每次执行都会创建新事务,并同时将上下文中的事务挂起...(降低事务大小,将非核心的执行逻辑包裹执行。) PROPAGATION_NEVER:该传播级别要求上下文中不能存在事务,否则抛出异常。...PROPAGATION_REQUIRED 在UserService中申明事务的传播级别为PROPAGATION.REQUIRED: @Service public class UserServiceImpl...Propagation.REQUIRES_NEW传播级别下会开启自己的事务,独立运行 外围开启事务 方法一: @Transactional(propagation = Propagation.REQUIRED

82620

Spring 事务和事务传播机制

,提交事务或回滚事务,对于回滚事务来说,如果程序在执行过程中出现了错误,那么此时就需要执行回滚事务 2....编程式事务 Spring 手动操作事务和 MySQL 操作事务类似,也是分为开启事务,提交事务,回滚事务等三个操作,需要用到 DataSourceTransactionManager (事务管理器)来进行上述事务的操作...事务传播机制 事务传播机制是指在多个事务方法相互调用时,定义事务如何在这些方法之间传播的规则,也就是延用调用方法的事务还是再重新开启一个新事务 Spring 事务的传播机制有以下七种 事务传播机制 描述...理解(有 A,B 两个方法,A 调用 B 对于 B 来说) Propagation.REQUIRED 默认的事务传播级别。...如果 A 有事务,B 就创建一个嵌套事务,如果没有就创建新的 Propagation.REQUIRED 默认的事务传播级别。如果当前存在事务,则加入该事务。

31910
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Transactional事务传播行为?

    事务传播行为有7种,不是与数据库交互,数据库定义的,而是spring框架自带的。 本文主要介绍三种:required、nested、required_new。...Propagation_required(传播要求):默认的,最常见的,如果当前没有事务,就新建事务执行,若有事务,就加入当前事务执行。...外围方法未开启事务的情况下,内部两个事务开启此事务是互不干扰的,且不受外围异常影响。 默认传播要求下,内围事务里面若异常捕获到,则此内围事务里的其他程序正常运行。...外围事务捕获到异常,外围及其其他内围事务不可以正常运行。 Propagation_supports(传播支持):支持当前事务,若没有事务,就以非事务执行。...Propagation_nested(传播嵌套):如果当前存在事务,则在嵌套内执行,如果没有事务,则执行Propagation_required操作。

    67630

    Spring事务传播机制

    Spring事务传播机制 Spring事务传播类型 本文主要是讲述Spring事务传播机制,也就是大家开发过程中多多少少会遇到的父方法调用子方法,或者A方法调用B方法时事务的传播机制问题,但是在开始讲Spring...事务传播机制之前需要先讲一下Spring事务的几种传播类型,如图 REQUIRED REQUIRED表示如果当前没有事务,就创建一个事务,如果已经存在一个事务,就加入该事务,是Spring默认的事务传播类型...父方法开启事务,子方法开启事务 父方法开启Spring默认事务传播类型,子方法开启Spring默认事务传播类型 设置insertRoleMenu 内部发生异常,同时insertRole 开启Spring...父方法开启REQUIRED事务,子方法开启REQUIRES_NEW事务 父方法开启Spring默认事务传播类型,子方法开启Spring REQUIRES_NEW事务传播类型 设置insertRoleMenu...父方法开启REQUIRED事务,子方法开启REQUIRES_NEW事务 父方法开启Spring默认事务传播类型,子方法开启Spring REQUIRES_NEW事务传播类型,异常产生发生在父方法最后一行

    25310

    Spring事务传播机制

    转载自 https://www.cnblogs.com/softidea/p/5962612.html Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播...通过事务传播行为控制当前的事务如何传播到被嵌套调用的目标服务接口方法中。...事务传播是Spring进行事务管理的重要概念,其重要性怎么强调都不为过。但是事务传播行为也是被误解最多的地方,在本文里,我们将详细分析不同事务传播行为的表现形式,掌握它们之间的区别。...事务传播行为种类 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播: 表1事务传播行为类型 事务传播行为类型...几种容易引起误解的组合事务传播行为 当服务接口方法分别使用表1中不同的事务传播行为,且这些接口方法又发生相互调用的情况下,大部分组合都是一目了然,容易理解的。

    48720

    Spring 事务传播行为

    传播行为定义关于客户端和被调用方法的事务边界。Spring定义了7种截然不同的传播行为。 1. PROPAGATION_MANDATORY,表示该方法必须运行在一个事务中。...如果当前没有事务正在发生,则抛出异常。 2. PROPAGATION_NESTED,表示如果当前有一个事务正在运行当中,则该方法应该运行在一个嵌套事务中。被嵌套的事务可以独立于封装事务进行提交或回滚。...七种事务理解 第一种事务 :mandatory 表示强制的,即方法必须在一个事务中运行,否则,抛出异常。它要求必须处在一个封装事务里,且它自己不会开启新的事务。...第二种事务 :nested 不作为事务,自己不启动事务,且外界不能有事务 第四种、第七种事务 :SUPPORTS 表示该方法不需要事务上下文,但外界如果有事务的话,它也支持在一个外界事务里运行。...第四种、第七种事务 :REQUIRED 表示当前方法必须在一个事务中运行,如果外界有事务,那么它就依赖于外界事务。如果外界没有事务,它就自己开启一个事务。

    40620

    spring事务传播特性

    spring事务传播特性 什么是事物呢?...那我们再想一下,那岂不就是数据库的几个特性了(想一下MYSQL的数据库的特性) Spring的事务的传播特性 通过上面对事物的说明,有编程经验的人应该都很清楚为什么需要失误了吧?...在spring中有两种事务管理: 编程式事务管理: 将事务管理代码嵌入到业务逻辑中来控制事务的提交和事务的回滚,必须在每个事物操作中包含额外的事务管理代码如下: ?...声明式事务管理 配置: 配置DataSource 配置事务管理器 事务的传播特性 那些类那些方法使用事务 Spring配置文件中关于事务配置总是由三个组成部分,分别是DataSource、TransactionManager...spring的事务传播属性 事务传播行为类型 说明 REQUIRED 如果有事务在运行,当前的方法就在这个事务内运行;否则,就启动一个新的事务,并在自己的事务内运行; REQUIRES_NEW 当前的方法必须启动新事务

    62220

    Spring事务和事务传播机制(1)

    Spring事务管理提供了灵活的方式来处理事务,包括事务的创建、提交、回滚以及事务的传播行为。 一、为什么需要事务?...二、Spring 中事务的实现 Spring 中的事务操作分为两类: 编程式事务(手动写代码操作事务)。 声明式事务(利用注解自动开启和提交事务)。...提交事务 commit; 回滚事务 rollback; 2、Spring 编程式事务(了解) Spring 手动操作事务和上面MySQL 操作事务类似,它也是有 3 个重要操作步骤: 开启事务(获取事务...提交事务。 回滚事务。.... propagation 事务的传播行为,默认值为Propagation.REQUIRED isolation 事务的隔离级别.默认值为Isolation.DEFAULT timeout 事务的超时时间

    34340

    Spring事务和事务传播机制(2)

    Spring事务管理提供了灵活的方式来处理事务,包括事务的创建、提交、回滚以及事务的传播行为。...1、事务传播机制是什么?...Spring 事务传播机制定义了多个包含了事务的方法,相互调用时,事务是如何在这些方法间进行传递的。 2、为什么需要事务传播机制?...事务隔离级别解决的是多个事务同时调用⼀个数据库的问题,如下图所示: 而事务传播机制解决的是⼀个事务在多个节点(方法)中传递的问题,如下图所示: 3、事务传播机制有哪些?...Spring 事务传播机制包含以下 7 种: Propagation.REQUIRED:默认的事务传播级别,它表示如果当前存在事务,则加入该事务;如果当前没有事务,则创建⼀个新的事务。

    43020

    Spring事务的传播行为

    事务的传播特性 事务的传播特性就是当一个事务方法被另一个事务方法调用的时候,这个事务方法应该如何执行。...,其中方法 A 开启的是 PROPAGATION_REQUIRED ,方法 B 开启的是 PROPAGATION_REQUIRES_NEW ,这种传播机制下,就是方法 B 有自己的事务,出错就回滚,没出错就提交...两个事务都是互不影响。 Spring 中的七种事务传播机制 1. 不需要事务 PROPAGATION_NEVER : 没有就非事务执行,有就抛异常。...可以有事务,也可以没有事务 PROPAGATION_SUPPORTS : 调用者有事务就加入,一起在事务中执行,没有就非事务执行。 3....PROPAGATION_NESTED : 如果没有事务,就新建一个事务,如果原来有,就在当前事务中嵌套其他事务。

    1.1K20

    SpringBoot的事务传播机制

    一、事务传播机制: 事务的传播行为是针对嵌套事务而言。...示例: @Transactional(propagation = Propagation.REQUIRED) 2.1.1 REQUIRED spring默认的事务传播行为就是它。 支持事务。...2.1.3 NESTED: 该传播行为解释:支持事务。如果当前已经在一个事务中了,则嵌套在已有的事务中作为一个子事务。如果当前没在事务中则开启一个事务。 内层事务结束,要等着外层一起提交。...当前有事务就支持。当前没有事务就算了,不会开启一个事物。 例子: 1.直接从外面调这个addStudent方法,外面没有事务,这个addStudent方法的事务传播行为是SUPPORTS。...2.1.5.MANDATORY 该传播行为解释:支持事务,如果业务方法执行时已经在一个事务中,则加入当前事务。否则抛出异常。

    2.6K42

    Spring事务的传播机制

    Spring 中事务的实现 编程式事务(了解即可): 编程式事务需要自己手动写代码操作事务 这里用用户注册来进行演示: Spring ⼿动操作事务和上⾯ MySQL 操作事务类似, 有 3 个重要操作步骤...throw new IOException(e); } return "注册成功"; } 结果观察: 看数据库: Spring 事务传播机制...: Spring的事务的隔离级别和Mysql还是一样的,由于Mysql上没有方法调来调去,但是我们编程时会有方法上的调用可以不同方法没有用同一个事务会有嵌套等等情况,所以我们的事务还有传播机制!...事务主要有7中传播机制,接下来比较重要的我会用代码来解释一下 我会用一个Controller调用两个service里的方法来进行说明 1.Propagation.REQUIRED: 默认的事务传播级别...情况下,当子事务发生异常,然后处理了(手动回滚事务)后就不会影响父事务和其他子事务: 结果发生异常的事务没有提交,但是没有发生异常的事务得到提交!

    19810

    springboot事务的传播机制

    事务的传播机制 所谓事务的传播行为是指,如果在开始当前事务之前,一个事务上下文已经存在,此时有若干选项可以指定一个事务性方法的执行行为。...(,默认)REQUIRED :如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。 SUPPORTS :如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。...MANDATORY :如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。 REQUIRES_NEW :创建一个新的事务,如果当前存在事务,则把当前事务挂起。...NOT_SUPPORTED :以非事务方式运行,如果当前存在事务,则把当前事务挂起。 NEVER :以非事务方式运行,如果当前存在事务,则抛出异常。...NESTED :如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于 REQUIRED 。

    47620

    Spring事务的传播行为

    本文主要介绍下Spring事务中的传播行为。 事务传播行为介绍 Spring中的7个事务传播行为: 事务行为 说明 PROPAGATION_REQUIRED 支持当前事务,假设当前没有事务。...就新建一个事务 PROPAGATION_SUPPORTS 支持当前事务,假设当前没有事务,就以非事务方式运行 PROPAGATION_MANDATORY 支持当前事务,假设当前没有事务,就抛出异常 PROPAGATION_REQUIRES_NEW...新建事务,假设当前存在事务。...假设当前存在事务,就把当前事务挂起 PROPAGATION_NEVER 以非事务方式运行,假设当前存在事务,则抛出异常 PROPAGATION_NESTED 如果当前存在事务,则在嵌套事务内执行。...--设置所有匹配的方法,然后设置传播级别和事务隔离-->

    1.3K20

    Spring之事务传播行为

    从名字理解起来,事务传播行为,既然为传播就肯定发生在两个实体之间,否则单个实体又如何发生行为呢。通俗点讲就是“一个巴掌拍不响”。下面进入正规话题。...事务传播行为主要用来描述由某一个事务传播行为修饰的方法被嵌套进另一个方法的事务中,该事务如何传播。这个概述可能不好理解,换句话就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。...methodB事务方法时,methodB是继续在调用者methodA的事务中运行呢,还是为自己开启一个新事务运行,这就是由methodB的事务传播行为决定的。...注意:methodA和methodB都加了事务。methodA()也可以不用开启事务,某一个事务传播行为修饰的方法并不是必须要在开启事务的外围方法中调用。...二、Spring中七种事务传播行为 通过上面伪代码加文字解释了解到事务传播行为的相关概念,下面就要学习事务传播行为的类型和运行机制。

    57430
    领券