首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spring @Transactional条件传播属性

是Spring框架中用于管理事务的注解之一。它用于在方法或类级别上标记事务边界,并定义了事务的传播行为。

事务传播属性定义了一个方法在调用另一个带有事务的方法时如何处理事务。在Spring中,有以下几种事务传播属性:

  1. REQUIRED(默认):如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。这是最常用的传播属性,适用于大多数情况。
  2. SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务方式执行。适用于不需要事务支持的方法。
  3. MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。适用于必须在事务中执行的方法。
  4. REQUIRES_NEW:创建一个新的事务,并挂起当前事务(如果存在)。适用于需要独立事务执行的方法。
  5. NOT_SUPPORTED:以非事务方式执行,并挂起当前事务(如果存在)。适用于不需要事务支持的方法。
  6. NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。适用于不能在事务中执行的方法。
  7. NESTED:如果当前存在事务,则在嵌套事务中执行;如果当前没有事务,则创建一个新的事务。嵌套事务是外部事务的一部分,可以独立提交或回滚。适用于需要嵌套事务支持的方法。

根据具体的业务需求和场景,选择合适的事务传播属性可以确保事务的一致性和可靠性。

关于Spring框架的事务管理和@Transactional注解的更多详细信息,可以参考腾讯云的相关产品和文档:

  • 腾讯云数据库MySQL事务管理:https://cloud.tencent.com/document/product/236/3130
  • 腾讯云云原生应用开发:https://cloud.tencent.com/product/tke
  • 腾讯云Serverless云函数:https://cloud.tencent.com/product/scf
  • 腾讯云容器服务:https://cloud.tencent.com/product/tke
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Transactional事务传播行为?

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

40930

Spring事务传播属性和隔离级别

Spring事务传播属性和隔离级别 一、Spring事务传播属性(Propagation): 0) 事务的四个关键属性(ACID) 1) REQUIRED(默认属性)需要事务 2) MANDATORY...-- propagation: 事务传播属性 REQUIRED: 需要事务 如果外层没有事务 则开启新的事务 如果外层存在事务,则融入当前事务 SUPPORTS: 支持事务...事务传播属性(Propagation): 0) 事务的四个关键属性(ACID) 原子性:事务是一个原子操作,由一系列动作组成。...(事务结果被写道持久化存储器中) 1) REQUIRED(默认属性)需要事务 如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。...3) Phantom Reads 幻像读 第一个数据正在查询符合某一条件的数据,这时,另一个事务又插入了一条符合条件的数据,第一个事务在第二次查询符合同一条件的数据时,发现多了一条前一次查询时没有的数据

9910

Spring中的@Transactional(rollbackFor = Exception.class)属性详解

spring支持编程式事务管理和声明式事务管理两种方式。    编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。...对于编程式事务管理,spring推荐使用TransactionTemplate。   声明式事务管理建立在AOP之上的。...在@Transactional注解中如果不配置rollbackFor属性,那么事物只会在遇到RuntimeException的时候才会回滚,加上rollbackFor=Exception.class,可以让事物在遇到非运行时异常时也回滚...@Transactional注解的全部属性详解 @Transactional属性 属性 类型 描述 value String 可选的限定描述符,指定使用的事务管理器 propagation enum:...Propagation 可选的事务传播行为设置 isolation enum: Isolation 可选的事务隔离级别设置 readOnly boolean 读写或只读事务,默认读写 timeout

6.3K21

Spring @Transactional工作原理

本文将深入研究Spring的事务管理。主要介绍@Transactional在底层是如何工作的。 JPA和事务管理 很重要的一点是JPA本身并不提供任何类型的声明式事务管理。...使用Spring @Transactional 使用Spring @Transactional,上面的代码就简化为: ? 代码更加简洁,可读性更好,也是目前Spring中事务处理的推荐方式。...通过使用@Transactional,事务传播等很多重要方面可以自动处理。这种情况下如果businessLogic()调用了其他事务方法,该方法将根据选项确定如何加入正在运行事务。...了解了@Transactional机制的各个部分,我们来看一下实现它的常用Spring配置。 整合三个部分 如何将三个部分组合起来使事务注解可以正确地发挥作用呢?...注解@EnableTransactionManagement通知Spring,@Transactional注解的类被事务的切面包围。这样@Transactional就可以使用了。

2.3K20

spring解析自定义注解_事务的注解@Transactional属性

本文将基于 spring 源码 5.2.x 分支,解析 spring 如何实现这套功能的。 这是系列的第二篇文章,将详细介绍 Spring 是如何解析 @AliasFor,实现各种别名功能。...相关文章: 深入理解Spring注解机制(一):注解的搜索与处理机制; 深入理解Spring注解机制(二):元注解解析与属性映射; 深入理解Spring注解机制(三):合并注解的合成; 一、创建合并注解聚合...Spring 支持的 @AliasFor 以及基于元注解的各种属性映射机制是怎么实现的。...2、处理别名属性 处理关联属性这做了三件事: 如果属性关联的这一组别名中,有一个别名属性是来自于 root 的,则直接无条件使用来自 root 的别名属性覆盖当前属性; 使用 MirrorSet 解析并记录彼此之间具有关系的属性...不过在 Spring 中,还支持一种默认的属性覆盖机制,即当父子注解都存在一个名称与类型皆相同的属性时,子注解的属性值将会覆盖父注解的属性值。

82720

spring @Transactional 事务注解

,那么就加入该事务,否则自己创建一个新的事务.这是spring默认的传播行为.。...NESTED: 如果一个活动的事务存在,则运行在一个嵌套的事务中.如果没有活动的事务,则按REQUIRED属性执行.它使用了一个单独的事务, 这个事务拥有多个可以回滚的保证点.内部事务回滚不会对外部事务造成影响...用来指明回滚的条件是哪些异常类或者异常类名。用法比较简单,这些不再赘述。...Spring @Transactional的注意事项 @Transactional 注解应该只被应用到 public 可见度的方法上。...因此,请接受Spring团队的建议并且在具体的类上使用 @Transactional 注解。 @Transactional 注解标识的方法,处理过程尽量的简单。

1.7K20

关于Spring的事务Transactional,锁同步,并发线程Spring事务传播机制和数据库隔离级别

Spring事务传播机制和数据库隔离级别 在标准SQL规范中定义了4个事务隔离级别,不同隔离级别对事务处理不同 。 未授权读取(Read Uncommitted): 也称 未提交读。...隔离级别 更新丢失 脏读取 重复读取 幻读 未授权读取 N Y Y Y 授权读取 N N Y Y 可重复读取 N N N Y 串行 N N N N Spring在TransactionDefinition...接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播: package org.springframework.transaction.annotation;...package org.springframework.transaction; import java.sql.Connection; /** * Interface that defines Spring-compliant...代码例子: @Transactional(propagation=Propagation.NESTED) @Transactional(propagation=Propagation.PROPAGATION_REQUIRES_NEW

1.5K30

Spring事务@Transactional深度讲解

hi,各位同学大家好,今天来给大家讲解下spring框架事务的原理。...spring事务有配置文件和注解两种方法,配置文件方式原理这里就不做过多的介绍,本次重点解释注解@Transactional的原理。 一:注解@Transactional的执行原理过程: ?...服务器启动时进行注解扫描,将所有带有@Transactional的方法都生成一个aop代理对象; 调用者在调用方法时,被切入到aop中,实际调用的是aop的代理对象; 在aop代理对象中开启了jdbc...当然有啦,如果是人为的,只需找到对应代码调整或删除即可; 如果是非运行异常的抛出,spring针对此问题也做了解决方案,有两种方案 配置rollbackFor: @Transactional(rollbackFor...rollbackFor是告知spring框架,要抓取非运行时异常,并回滚。=Exception.class是告知spring框架抓取的范围是什么。所以我们也可以自定义异常,只抓取特定的异常进行回滚。

96010

spring事务传播

Spring 事务不生效的原因 同一个类中无事务方法调用一个有事务方法事务不生效 public void testTransactionWork() { insertTransaction();...Spring 事务的传播级别 Spring 事务传播级别与数据库事务隔离级别不同,传播分为 7 种级别: PROPAGATION_REQUIRED:Spring的默认传播级别,如果上下文中存在事务则加入当前事务...PROPAGATION_MANDATORY:该传播级别要求上下文中必须存在事务,否则抛出异常 PROPAGATION_REQUIRES_NEW:该传播级别每次执行都会创建新事务,并同时将上下文中的事务挂起...PROPAGATION_NEVER:该传播级别要求上下文中不能存在事务,否则抛出异常。...Propagation.REQUIRES_NEW传播级别下会开启自己的事务,独立运行 外围开启事务 方法一: @Transactional(propagation = Propagation.REQUIRED

66820

Spring的@Transactional如何实现的(必考)

@Transactional注解简介 @Transactionalspring中声明式事务管理的注解配置方式,相信这个注解的作用大家都很清楚。...通过@Transactional注解就能让spring为我们管理事务,免去了重复的事务管理逻辑,减少对业务代码的侵入,使我们开发人员能够专注于业务层面开发。...我们知道实现@Transactional原理是基于spring aop,aop又是动态代理模式的实现,通过对源码的阅读,总结出下面的步骤来了解实际中,在spring 是如何利用aop来实现@Transactional...在@Transactional的实现中,同样如此,spring为我们定义了以 @Transactional 注解为植入点的切点,这样才能知道@Transactional注解标注的方法需要被代理。...@Transactional的作用一个就是标识方法需要被代理,一个就是携带事务管理需要的一些属性信息。

3.3K20

Spring事务管理 - `@Transactional`注解解析

Spring框架通过@Transactional注解提供了一种便捷的方式来管理事务。本文将深入解析@Transactional注解的原理和用法,并结合实际项目场景,探讨在事务管理中的最佳实践。...@Transactional注解原理 @Transactional注解是Spring框架中用于声明事务性操作的注解。它可以应用于方法级别或类级别,并支持多种属性来定义事务的行为。...当一个方法被标记为@Transactional时,Spring会在方法执行前开启一个事务,在方法执行后根据方法执行结果决定是提交事务还是回滚事务。...传播行为: 根据业务需求选择适当的事务传播行为,例如REQUIRED、REQUIRES_NEW等。...结论 @Transactional注解是Spring框架中重要的事务管理工具,能够轻松实现事务的声明式管理。

32410
领券