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

Spring中声明性事务中的传播问题(选择正确)

在Spring中,声明性事务是通过使用@Transactional注解来实现的。事务的传播行为是指在多个事务方法调用时,事务的传播方式。Spring中有7个传播行为可供选择,包括:

  1. REQUIRED:如果当前存在事务,则加入该事务,如果当前不存在事务,则创建一个新的事务。这是默认的传播行为。
  2. SUPPORTS:如果当前存在事务,则加入该事务,如果当前不存在事务,则以非事务方式执行。
  3. MANDATORY:如果当前存在事务,则加入该事务,如果当前不存在事务,则抛出异常。
  4. REQUIRES_NEW:无论当前是否存在事务,都创建一个新的事务,并在该方法执行结束后,暂停当前事务。
  5. NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,则挂起该事务。
  6. NEVER:以非事务方式执行操作,如果当前存在事务,则抛出异常。
  7. NESTED:如果当前存在事务,则在该事务的嵌套事务中执行。如果当前不存在事务,则创建一个新的事务。

根据不同的业务需求,选择合适的传播行为可以确保事务的正确执行。例如,如果一个方法需要在一个独立的事务中执行,而不受调用方的事务影响,可以选择REQUIRES_NEW传播行为。

腾讯云提供了一系列的云计算产品,其中与Spring声明性事务相关的产品是云数据库 TencentDB for MySQL。它是一种高性能、高可靠的关系型数据库,提供了多种事务隔离级别和事务支持,适用于各种规模的应用场景。您可以通过以下链接了解更多关于腾讯云数据库的信息:https://cloud.tencent.com/product/tencentdb

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Spring事务传播行为

由于在我们日常开发时,通常会在一个Service接口中调用其它Service接口以此来完成一个完整事务操作,这时就会发生服务接口嵌套调用情况,spring通过事务传播行为控制当前事务如何传播到被嵌套调用目标服务接口方法...下面我们想想了解一下在spring中都有哪些不同事务传播行为,以前它们区别。...spring在TransactionDefinition接口中定义了7种类型事务传播行为,它们具体区别如下: 事务传播行为说明 PROPAGATION_REQUIRED:如果当前没有事务,那就新建一个新事务...如果DAO接口是基于spring提供模板类创建,由于模板类已经在内部使用了资源获取工具类获取数据库连接,所以用户就不必关心底层数据连接获取问题了。...在spring声明事务管理是通过spring AOP功能实现。具体流程是通过事务声明信息,spring负责将事务管理增强逻辑动态织入到业务方法相应连接点中。

1.2K40

【转载】Spring 事务传播方式

Spring传播行为: spring 特有的事务传播行为,spring 支持 7 种事务传播行为,确定客户端和被调用端事务边界(说得通俗一点就是多个具有事务控制 service 相互调用时所形成复杂事务边界控制...)下图所示为 7 钟事务传播机制 o 传播行为 含义 PROPAGATION_REQUIRED(XML 文件为 REQUIRED) 表示当前方法必须在一个具有事务上下文中运行,如有客户端有事务在进行...如果有一个事务正在运行,他将在运行期被挂起,直到这个事务提交或者回滚才恢复执行 例子讲解以上七事务传播机制 假设有类 A 方法 methodB(), 有类 B 方法 methodB(). 1)...6)PROPAGATION_REQUIRES_NEW 表示事务传播特性定义为 PROPAGATION_REQUIRES_NEW 方法需要运行在一个新事务。...实际场景七大事务传播行为使用 1、  在一个话费充值业务处理逻辑,有如下图所示操作: ?

63520
  • Spring事务传播行为有哪些?

    1位工作2年小伙伴面试时候被问到这样一个问题,说,Spring事务传播行为有哪些?他说他在面试时候能想起来一些,但在实际项目开发又基本不需要配置。...1、事务传播行为 ENTER TITLE 在日常开发,我们经常会存在多个声明事务方法相互调用,在这种情况下,会存在嵌套两个或两个以上事务情况,所谓事务传播行为就是指这些事务之间传播规则。...methodA()是开启一个新事务,还是继续在methodB()这个事务执行?就取决于事务传播行为规则定义。...在Spring,一共定义了7种内置事务嵌套传播行为: 第1种:REQUIRED,它是Spring默认事务传播行为。表示如果当前存在事务,则加入这个事务,如果不存在事务,就新建一个事务。...ENTER TITLE Spring事务传播一般不需要开发人员显式定义,默认就是PROPAGATION_REQUIRED,只要在嵌套事务情况下需要重点了解。 以上就是我对这个问题理解。

    64010

    Spring 事务哪几种事务传播行为

    有的时候博客内容会有变动,首发博客是最新,其他博客地址可能会未同步,认准https://blog.zysicyj.top Spring 事务传播行为 在Spring框架事务传播行为定义了业务方法和事务关系...,特别是当一个业务方法在另一个事务方法中被调用时。...Spring支持7种不同事务传播行为: 1. PROPAGATION_REQUIRED 「默认传播行为」。如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新事务。 2....PROPAGATION_REQUIRES_NEW 创建一个新事务,并暂停外部事务(如果有的话)。 5....这些事务传播行为使得开发者可以精确地控制事务边界和行为,在构建复杂企业级应用时非常有用。每种行为使用取决于特定业务场景和需求。 本文由 mdnice 多平台发布

    12510

    Spring事务传播实现子事务独立

    在一些业务场景,为了保持业务数据一致,需要用到事务,特别是交易系统。...Spring使用事务传播特性,完美地解决这个问题 Spring事务传播 Spring在TransactionDefinition接口中规定了7种类型事务传播行为。...事务传播行为是Spring框架独有的事务增强特性,他不属于事务实际提供方数据库行为。这是Spring为我们提供强大工具箱,使用事务传播行可以为我们开发工作提供许多便利。...事务传播行为类型 说明 PROPAGATION_REQUIRED 如果当前没有事务,就新建一个事务,如果已经存在一个事务,加入到这个事务。这是最常见选择。...根据Spring事务传播类型,可以看出PROPAGATION_REQUIRES_NEW是可以满足我们需求 业务实现 这里我们假设创建订单时,需要完成了两步(插入用户,插入商品,这里没用关闭订单做示例了

    1.1K11

    SSM框架(三)Spring声明事务

    一致(consistency):一旦所有事务动作完成,事务就要被提交。数据和资源处于一种满足业务规则一致性状态。...持久(durability):事务一旦完成,无论系统发生什么错误,结果都不会受到影响。通常情况下,事务结果被写到持久化存储器。...Spring事务管理 编程式事务管理:将事务管理代码嵌到业务方法来控制事务提交和回滚,但是每个事务操作业务逻辑包含额外事务管理代码。加重不必要重复代码。...声明事务管理:将事务管理作为横切关注点,通过aop方法模块化。Spring通过Spring AOP框架支持声明事务管理。即是用AOP横切事务管理到指定切点中。...默认行为):如果当前没有事务,就新建一个事务,如果已存在一个事务,加入到这个事务,这是最常见选择

    70720

    面试官:说说Spring事务传播行为

    前言 在开发,相信大家都使用过Spring事务管理功能。那么,你是否有了解过,Spring事务传播行为呢? Spring,有7种类型事务传播行为。...事务传播行为是Spring框架提供一种事务管理方式,它不是数据库提供。不知道大家是否听说过“不要在service事务方法嵌套事务方法,这样会提交多个事务说法,其实这是不准确。...了解了事务传播行为之后,相信你就会明白! Spring七种事务传播行为 事务传播行为,默认值为 Propagation.REQUIRED。...mandatory中文是强制意思,表明了被修饰方法,一定要在事务中去调用,否则会抛出异常。...所以这里就不做演示了 总结 事务传播行为,在开发可能不会特别的留意到它(更多时候,我们可能只是使用默认方式),但是还是需要对其要有所理解。希望本篇文章能让大家明白Spring7种事务传播行为。

    15810

    面试官:说说Spring事务传播行为

    前言 在开发,相信大家都使用过Spring事务管理功能。那么,你是否有了解过,Spring事务传播行为呢? Spring,有7种类型事务传播行为。...事务传播行为是Spring框架提供一种事务管理方式,它不是数据库提供。不知道大家是否听说过“不要在service事务方法嵌套事务方法,这样会提交多个事务说法,其实这是不准确。...了解了事务传播行为之后,相信你就会明白! 原创声明 本文首发于头条号【Happyjava】。...Spring七种事务传播行为 事务传播行为,默认值为 Propagation.REQUIRED。...所以这里就不做演示了 总结 事务传播行为,在开发可能不会特别的留意到它(更多时候,我们可能只是使用默认方式),但是还是需要对其要有所理解。希望本篇文章能让大家明白Spring7种事务传播行为。

    91310

    _Spring 事务相关配置、传播行为、隔离级别及注解配置声明事务

    二、事务传播行为         事务传播行为是指多个含有事务方法相互调用时,事务如何在这些方法间传播。         ...System.out.println("method1"); } public void method2(){   System.out.println("method2"); }         事务传播特性就是解决这个问题...传播行为 介绍 REQUIRED 默认。支持当前事务,如果当前没有事务,就新建一个事务。这是最常见选择。 SUPPORTS 支持当前事务,如果当前没有事务,就以非事务方式执行。...NESTED 必须在事务状态下执行,如果没有事务则新建事务,如果当前有事务则创建一个嵌套事务 三、事务隔离级别         事务隔离级别反映事务提交并发访问时处理态度,隔离级别越高,数据出问题可能越低...SqlServer , Oracle默认事务隔离级别是READ_COMMITED Mysql默认隔离级别是REPEATABLE_READ 四、注解配置声明事务 Spring支持使用注解配置声明事务

    18000

    Spring学习笔记(五)——JdbcTemplate和spring声明事务

    ,int.class,2000); System.out.println(count); } } spring声明事务 spring基于XML声明事务控制配置步骤 1、...默认值是DEFAULT,表示使用数据库默认隔离级别。 * propagation:用于指定事务传播行为。默认值是REQUIRED,表示一定会有事务,增删改选择。...--spring基于xml声明事务控制配置步骤 1.配置事务管理器 2.配置事务通知 3.配置aop通用切入点表达式 4.建立事务通知和切入点表达式对应关系...然后用spring声明事务进行对事务进行管理,保证事务一致,报错时进行事务回滚,导致不会出现一方转账出去,另一方接收不成功。 spring基于注解声明事务转账案例 bean.xml <?...-- spring基于注解 声明事务控制配置步骤 1、配置事务管理器 2、开启spring对注解事务支持 3、在需要事务支持地方使用@Transactional

    66220

    Spring 事务相关配置、传播行为、隔离级别及注解配置声明事务

    二、事务传播行为         事务传播行为是指多个含有事务方法相互调用时,事务如何在这些方法间传播。         ...System.out.println("method1"); } public void method2(){   System.out.println("method2"); }         事务传播特性就是解决这个问题...传播行为 介绍 REQUIRED 默认。支持当前事务,如果当前没有事务,就新建一个事务。这是最常见选择。 SUPPORTS 支持当前事务,如果当前没有事务,就以非事务方式执行。...NESTED 必须在事务状态下执行,如果没有事务则新建事务,如果当前有事务则创建一个嵌套事务 三、事务隔离级别         事务隔离级别反映事务提交并发访问时处理态度,隔离级别越高,数据出问题可能越低...SqlServer , Oracle默认事务隔离级别是READ_COMMITED Mysql默认隔离级别是REPEATABLE_READ 四、注解配置声明事务 Spring支持使用注解配置声明事务

    26220

    深入理解Spring框架声明事务管理

    事务管理重要 事务管理是数据库操作关键环节,确保数据一致和完整。在复杂业务逻辑事务管理能保证操作原子,即要么全部成功,要么全部失败。 2....一致声明事务管理确保在方法执行过程始终遵循一致事务处理逻辑,减少了因手动管理事务而导致错误和不一致可能。...这可能导致在某些情况下无法正确回滚事务事务传播行为:声明事务管理事务传播行为有时可能不符合预期。...例如,当两个相互关联方法分别属于不同服务类时,可能需要仔细考虑事务传播行为以避免潜在问题。 不支持跨远程调用事务管理:声明事务管理主要适用于单个应用服务器内场景。...事务传播行为不正确: 在Spring,你可以通过@Transactional注解propagation属性来配置事务传播行为。如果这个配置不正确,那么可能会导致事务不起作用。 5.

    24510

    Spring事务

    Spring事务 配置事务 spring配置文件 <?xml version="1.0" encoding="UTF-8"?...Spring事务传播特性(propagation 属性) REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。...这是最常见选择。 SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。 MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。...3)这时,客户端B事务还没提交,客户端A不能查询到B已经更新数据,解决了脏读问题; (4)客户端B事务提交; (5)客户端A执行与上一步相同查询,结果 与上一步不一致,即产生了不可重复读问题...一个间隙被事务加了锁,其他事务是不能在这个间隙插入记录,这样可以防止幻读; 3、事务隔离级别为串行化时,读写数据都会锁住整张表; 4、隔离级别越高,越能保证数据完整和一致,但是对并发性能影响也越大

    42520

    fix bug:Spring事务不生效问题

    事务注解不生效问题 出现该问题主要原因主要有两点: Spring事务没有生效 出现异常时无法正常回滚 Spring事务不生效情况 @Transactional用在非public方法上 未通过代理手段调用事务方法...正常注入Spring,在调用方法时使用This调用事务方法,Spring不会注入this,所以无法使用事务。...未正确处理异常,事务生效也不一定能回滚 多次数据库操作,未配置事务传播 事务生效不能回滚情况: try/catch包裹标记了@Transactional注解方法,方法满足一定条件时才会回滚。...一定条件: ①:只有异常传播除了标记@Transactional注解方法,事务才会回滚。...③:catch作用就是捕捉方法异常,使回滚不传播到外层事务,以免对其他事务产生影响。

    74510

    详述 Spring Bean 作用域、事务隔离级别以及传播行为

    XML 声明 singleton 当一个 Bean 作用域为singleton时候,那么 Spring IOC 容器只会存在一个共享 Bean 实例,并且所有对 Bean 请求,只要id与该 Bean...接下来,我们了解一下事务事务是逻辑处理原子保证手段,通过使用事务控制,可以极大避免出现逻辑处理失败导致脏数据等问题。...下面,我们就一起来了解 Spring 事务数据隔离级别和传播行为。...对于 Spring 事务传播行为,最有可能让大家产生疑惑可能就是PROPAGATION_NESTED了,即嵌套事务。...同上,子事务是父事务一部分,由父事务统一提交。 参考资料: Springbean作用域 原型模式(springboot 注解@Scope使用说明) Spring五个事务隔离级别和七个事务传播行为

    38010

    spring事物传播及隔离

    关于@Transactional注解: 添加事务注解 1、使用 propagation 指定事务传播行为, 即当前事务方法被另外一个事务方法调用时。...如何使用事务, 默认取值为 REQUIRED, 即使用调用方法事务REQUIRES_NEW: 事务自己事务, 调用事务方法事务被挂起。...2、使用 isolation 指定事务隔离级别, 最常用取值为 READ_COMMITTED。 3、默认情况下 Spring 声明事务对所有的运行时异常进行回滚....也可以通过对应属性进行设置. 通常情况下去默认值即可。4、使用 readOnly 指定事务是否为只读. 表示这个事务只读取数据但不更新数据,这样可以帮助数据库引擎优化事务....我代码如下: BookShopDao接口 package com.demo.spring.bean; public interface BookShopDao { //根据书编号返回书单价

    57720

    天天用Spring你竟然不知道事务传播

    在我们日常开发Spring是必备技能,在面试时候,这一块知识也会着重地问,虽然每天都在使用,但是稍不注意就会出问题,今天这篇文章我们来详细聊聊Spring事务传播,助力金三银四面试季。...什么是Spring事务传播Spring事务传播是当多个包含事务方法嵌套调用时候,处理事务规则。...Spring有几种处理这种嵌套事务方式?通过源码我们发现有7种,定义在Propagation这个枚举类,接下来我们讲详细说一下每一种传播行为都可以帮助我们处理什么样问题。...1、Propagation.REQUIRED 这种传播行为是Spring默认,当我们使用@Transactional注解且不指定传播行为时候就是使用这个,它指的是外层调用方法如果开启了事务,那么当前方法就合并到外层事务执行...,methodA开启了事务传播为REQUIRED,methodB传播为NOT_SUPPORTED,在执行过程,methodA会开启一个事务A,在调用methodB时候,会先挂起methodA

    50611

    天天用Spring你竟然不知道事务传播

    在我们日常开发Spring是必备技能,在面试时候,这一块知识也会着重地问,虽然每天都在使用,但是稍不注意就会出问题,今天这篇文章我们来详细聊聊Spring事务传播,助力金三银四面试季。...什么是Spring事务传播Spring事务传播是当多个包含事务方法嵌套调用时候,处理事务规则。...Spring有几种处理这种嵌套事务方式?通过源码我们发现有7种,定义在Propagation这个枚举类,接下来我们讲详细说一下每一种传播行为都可以帮助我们处理什么样问题。 ?...1、Propagation.REQUIRED 这种传播行为是Spring默认,当我们使用@Transactional注解且不指定传播行为时候就是使用这个,它指的是外层调用方法如果开启了事务,那么当前方法就合并到外层事务执行...,methodA开启了事务传播为REQUIRED,methodB传播为NOT_SUPPORTED,在执行过程,methodA会开启一个事务A,在调用methodB时候,会先挂起methodA

    35840
    领券