@Transactional事务注解

Spring Boot 中使用 @Transactional 注解配置事务管理 下面分别介绍一下的几个属性。 阅读详情

1、实现原理

  • 基于AOP面向切面的,它将具体业务与事务处理部分解耦,代码侵入性很低

2、@Transactional注解可以作用于哪些地方

  • 作用于类:当把@Transactional 注解放在类上时,表示所有该类的public方法都配置相同的事务属性信息。
  • 作用于方法:当类配置了@Transactional,方法也配置了@Transactional,方法的事务会覆盖类的事务配置信息。
  • 作用于接口:不推荐这种使用方法,因为一旦标注在Interface上并且配置了Spring AOP 使用CGLib动态代理,将会导致@Transactional注解失效

2、失效场景

  • 应用在非 public 修饰的方法上
  • 属性 propagation 设置错误
    若是错误的配置以下三种 propagation,事务将不会发生回滚。
    TransactionDefinition.PROPAGATION_SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。
    TransactionDefinition.PROPAGATION_NOT_SUPPORTED:以非事务方式运行,如果当前存在事务,则把当前事务挂起。
    TransactionDefinition.PROPAGATION_NEVER:以非事务方式运行,如果当前存在事务,则抛出异常。
  • 属性 rollbackFor 设置错误
    rollbackFor 可以指定能够触发事务回滚的异常类型。Spring默认抛出了未检查unchecked异常(继承自 RuntimeException 的异常)或者 Error才回滚事务;其他异常不会触发回滚事务
  • 同一个类中方法调用,导致@Transactional失效
    由于使用Spring AOP代理造成的,因为只有当事务方法被当前类以外的代码调用时,才会由Spring生成的代理对象来管理
  • 异常被 ”catch“导致@Transactional失效
  • 数据库引擎不支持事务
详解:事务注解 @Transactional ,另外,配置类事务的传播行为支持当前事务,当前如果没有事务,那么会创建一个事。事务的传播规则是指在多个事务方法相互调用的情况下,事务应该如何进行传播和管理。属性用于指定事务的传播行为,它决定了当前方法执行时,如何处理已经存在的事务。属性用于指定事务的隔离级别,它决定了当前事务与其他事务之间的隔离程度。事务的创建也是有一定的规则,对于一个方法里已经存在的事务,支持当前事务,如果当前没有事务,就以非事务来执行。以非事务执行操作,如果当前存在事务,则当前事务挂。新建事务,如果当前存在事务,就把当前事务挂起。 阅读详情

相关推荐

Cadence Allegro16.6怎么导出器件引脚信息的报告

当我们需要用到器件的引脚相关信息时,可以利用allegro中的reports这个功能导出器件的相关信息。下面是具体的操作步骤。

suyucheng66的博客 5719

@Transactional注解的使用范围

@Transactional注解的使用范围

shilaiyin8288的博客 4579

Mac本地部署OpenClaw:从零搭建企业级知识库AI助手

大语言模型(LLM)作为当前人工智能的核心技术,通过其强大的自然语言理解和生成能力,正在深刻改变信息交互方式。其原理是基于海量数据训练的深度神经网络,能够根据上下文预测并生成连贯文本。这一技术的核心价值在于,它能够作为智能中枢,理解和执行复杂指令,从而将通用AI能力转化为解决特定业务问题的生产力。在工程实践中,通过AI Agent框架(如OpenClaw)将LLM与外部工具和知识系统连接,是实现其价值的关键。这涉及到**本地部署**与**私有化**部署,以确保数据安全与成本可控。具体应用场景包括企业知识库问

weixin_33402252的博客 376

@Transactional属性详解

文章目录@Transactional属性详解使用说明注解失效问题@Transactional 应用在非 public 修饰的方法上@Transactional 注解属性 rollbackFor 设置错误同一个类中方法调用,导致@Transactional失效异常被你的 catch“吃了”导致@Transactional失效数据库引擎不支持事务开启多线程任务时,事务管理会受到影响 @Transactional属性详解 声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或

棉花糖的博客 3614

ESP32 Arduino学习篇 (一) 引脚和串口的基本使用

简单来讲arduino就是通过源代码控制开发板的信号输入输出从而实现对一些电子元件的控制,例如LED灯,蜂鸣器,按键arduino程序首先来讲arduino程序是基于C语言,而实现类似对于LED灯和蜂鸣器的简单控制只需简单C语言知识即可实现。arduino程序是基于函数的,而在arduino的库有很多函数,我们只需要调用即可。arduino的程序主体是**setup()函数和loop()**函数以及其它在使用过程中需要构建的函数:setup()函数。

DOF526570的博客 1万+

Flink 作业报错——TaskManager连接不上

Flink 作业报错——TaskManager连接不上

lm223的博客 1900

Spring是如何管理事务的之@Transactional注解详解

如果想要方法 1 和方法 2 均单独保持事务一致性怎么办呢,刚说过了,如果不是用代理调用 @Transactional 注解是不生效的,所以一定要使用代理调用实现,然后让方法 1 和方法 2 分别单独开启新的事务,便 OK 啦。第一点要注意的就是在 @Transactional 注解的方法中,再调用本类中的其他方法 method2 时,那么 method2 方法上的 @Transactional 注解是不!答案是结果和上面是一致的。通过代理对象在目标对象前后进行方法增强,也就是事务的开启提交和回滚。

weixin_43439425的博客 2420

【Unity】【VR】如何让Distance Grab抓取物品时限制物品的Rotation

VR中Canvas抓取旋转问题的解决方案 在VR应用中,Canvas作为UI面板常需被抓取拖动,但默认会随手柄产生Z轴旋转,导致UI歪斜。Unity的Rigidbody冻结旋转功能对此无效,因为XR抓取直接修改Transform而非物理模拟。

每日出拳老爷子的博客 611

Spring——事务注解@Transactional【建议收藏】

下面介绍@Transctional的用法,包括:注解参数设置,事务方法调用的几种不同case,事务如何回滚,常见的事务失效的场景以及使用建议;

GitHub质检员 6048

深入理解Android音视频同步机制(三)NuPlayer的avsync逻辑

本文深入介绍了NuPlayer的avsync逻辑和原理

张晖的专栏 1万+

《中国电信运营商骨干网:历史、现状与未来演进》系列 第一篇:中国骨干网全景图:一级运营商与专用网络的演进

揭秘国家信息高速公路!一文读懂什么是骨干网,它如何支撑我们的数字生活,以及电信、联通、移动、广电等巨头如何构建这张“国家级动脉”。

maqh_csdn的博客 2036

@Transactional 事务注解

1.Spring @Transactional 详解:何时使用、为什么使用、如何使用。当你需要执行多个数据库操作,且这些操作必须具备原子性(要么全部成功,要么全部失败)。2.工作 6 年,@Transactional 注解用的一塌糊涂!可以通过 rollbackFor 来修改默认规则。Spring 的事务管理主要基于。private 方法不生效。事务方法调用自身不会生效。

Blue_Pepsi_Cola的博客 2001

UG\NX二次开发 找不到指定的dlx文件(Specified Dlx file not found)

有群友问:用Ctrl+U运行的时候就报错,找不到指定的dlx文件Specified Dlx file not found。怎么处理。

王牌飞行员_里海的博客 1127

从@Transactional注解看Spring事务

在使用Spring事务时,我们只需在某方法上使用@Transactional注解简单的标注一下,便可以实现很强大的事务控制功能,这其中的缘由,看小编娓娓道来; 首先需要明确:在spring事务的切面中,实际上是一个Around切面,在注解的业务方法前后都可以被调用,而实际上实现切面操作的是TransactionInterceptor类; [本篇我们先从实例代码...

GO BEYOND YOURSELF 661

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【Spring】事务和@Transactional注解

Spring事务和@Transactional详解

啊松同学的博客 2463

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

@Transactional事务注解内含乾坤?

本文主要分析证明@Transactional的一个隐含操作

程序员Forlan的博客 964

SpringBoot 事务注解@Transactional

SpringBoot提供了非常方便的事务操作,通过注解就可以实现事务的回滚,非常方便快捷,下面我们就说一下如何进行事务操作。 1. 事务说明 在Spring中,事务有两种实现方式,分别是编程式事务管理和声明式事务管理两种方式。 编程式事务管理: 编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,...

程序猿踩坑集锦 2万+

SpringBoot事务注解@Transactional

SpringBoot提供了非常方便的事务操作,通过注解就可以实现事务的回滚,非常方便快捷,下面我们就说一下如何进行事务操作。1. 事务说明在Spring中,事务有两种实现方式,分别是编程式事务管理和声明式事务管理两种方式。 编程式事务管理: 编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。

Kenny的专栏 12万+

事务——mysql事务以及注解@Transactional

如果其中有一条SQL语句失败,就进行事务的回滚,所有的SQL语句全部执行失败。所谓事务的传播行为,指的就是在A方法运行的时候,首先会开启一个事务,在A方法当中又调用了B方法, B方法自身也具有事务,那么B方法在运行的时候,到底是加入到A方法的事务当中来,还是B方法在运行的时候新建一个事务?总结一下,使用rollbackFor属性可以精确地控制事务回滚的条件,可以指定在哪些异常情况下触发回滚操作,从而保证数据的一致性和完整性。就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行事务控制。

abc2003_的博客 1578

事务管理@Transactional注解属性详解

事务管理 事务管理是企业级应用程序开发中必不可少的技术,用来确保数据的完整性和一致性; Spring 实现事务管理有如下两种方式: 1.编程式事务管理: 将事务管理代码嵌入到业务方法中来控制事务的提交和回滚,在编程式管理事务中,必须在每个事务操作中包含额外的事务管理代码。 2.声明式事务管理(推荐): 大多数情况下比编程式事务管理更好用,它将事务管理代码从业务方法中分离出来,以声明的方式来实现事务...

qq_41763734的博客 2712

Spring事务注解@Transactional的使用

事务(Transaction)是指在数据库管理中,确保数据操作完整性和一致性的一系列数据操作的集合,在Spring中要如何如何使用事务,可以通过注解声明的方式,@Transactional注解就是Spring提供的一种声明式事务管理方式。

何以十七的博客 1158

spring @Transactional 事务注解的坑

1. 在需要事务管理的地方加@Transactional 注解。@Transactional 注解可以被应用于接口定义和接口方法、类定义和类的 public 方法上。 2.@Transactional 注解只能应用到 public 可见度的方法上。 如果你在 protected、private 或者 package-visible 的方法上使用 @Transactional 注解,它也不会报错...

weixin_30814319的博客 132

5分钟搞懂Spring事务及@Transactional注解的使用

5分钟搞懂Spring事务及@Transactional注解的使用切面常识Spring 事务代码反例分析: 切面常识 事务是一种切面业务。事务的开启和提交、回滚是在切面上完成的,也就是代理对象所新增的部分。 也就是需要用事务的时候,就需要通过切入点,调用切面代理的对象,调用切面里面的通用处理,再调用目标对象的方法。 。。。 这些都懂,可是在实际中,要用事务的时候,就加个@Transactional...

chaletan的博客 1323
上一篇: 最左匹配原则
下一篇: 一句话解释代理模式
fall_hat
博客等级 码龄10年 44粉丝 336原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值