spring事务不生效的场景有哪些

参考文章地址 百度安全验证,https://www.cnblogs.com/novwind/p/17461448.html

        这里讨论的是声明式事务的不生效场景。编程式事务不在此处讨论

        要说明spring中哪些场景事务不生效,就要说明spring的事务控制是如何实现的。Spring框架中事务控制的运行原理是基于AOP代理机制实现的,它可以在不修改原有代码的情况下,为指定的方法添加事务控制的逻辑。这样可以大大简化我们的编程工作,也可以提高我们的代码质量和可维护性。

      @Transactional 注解默认只对 RuntimeException 和Error 进行回滚,对其他异常不进行回滚。如果需要对其他异常进行回滚,可以通过设置注解的rollbackFor 属性来指定。
        @Transactional 注解只能应用在 public 方法上,对于private、protected或default方法无效。这是因为Spring框架默认使用JDK动态代理来生成代理对象,而JDK动态代理只能拦截public方法。如果需要拦截非public方法,可以通过设置Spring容器的aop:config标签的proxy-target-class属性为true,让Spring框架使用CGLIB动态代理来生成代理对象,在Spring Boot中则默认启用此属性。CGLIB动态代理是通过继承目标类来生成子类作为代理对象,因此可以拦截非public方法。
        @Transactional 注解只能对外部调用有效,对于同一个类中的内部调用无效。这是因为同一个类中的内部调用并没有经过代理对象,而是直接调用了目标方法,因此无法触发AOP拦截和增强。如果需要对内部调用也进行事务控制,可以通过使用ApplicationContext或AutowireCapableBeanFactory 来获取当前类的代理对象,然后通过代理对象来调用内部方法。
        @Transactional 注解可以同时应用在接口、类和方法上,它们之间有继承和覆盖关系。
注解的作用范围:如果在接口上使用注解,它将应用于所有实现该接口的类和方法。如果在类上使用注解,它将应用于该类中的所有方法。如果在方法上使用注解,它将仅应用于该方法。
继承关系:当一个类继承另一个类时,子类继承了父类的@Transactional注解。但是,子类可以选择覆盖父类的注解,并使用自己的注解配置。这意味着子类可以通过覆盖注解来修改事务的传播行为、隔离级别等属性。

        基于以上的条件限制,总结出一下15中事务不生效的情况

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/253375.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

磁力计LIS2MDL开发(2)----电子罗盘

磁力计LIS2MDL开发.2--电子罗盘 概述视频教学样品申请源码下载环境磁场建模消除硬铁误差软铁干扰主程序 概述 本文将介绍如何使用 LIS2MDL 传感器来读取数据来转化为指南针。 地磁场强度范围约为 23,000 至 66,000 nT ,并且可以建模为磁偶极子,其场线起…

10天玩转Python第8天:python 文件和异常 全面详解与代码示例

今日内容 文件操作 普通文件的操作json 文件的操作[重点] 异常处理(程序代码运行时的报错) 文件介绍 计算机的 文件,就是存储在某种 长期储存设备 上的一段 数据 作用: 将数据长期保存下来,在需要的时候使用 ​ 1.计算机只认识 二进制(0 1) 2.文件中…

CMA、CNAS软件检测公司分享:压力测试应关注的指标和面临的问题

软件压力测试是容易被传统企业忽视的测试点,用户人数一旦超过预期,极易造成软件产品卡顿、崩溃的情况,不利于用户正常使用,严重影响企业公信力和盈利水平。今天卓码软件测评小编来聊聊压力测试过程中应该关注的指标和会面临的问题…

Mysql存储引擎-InnoDB

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码、Kafka原理、分布式技术原理、数据库技术🔥如果感觉博主的文章还不错的…

电商平台如何选择分账系统

电商平台尤其是多用户商城系统,它属于资源整合型平台,随着商户的入驻,它会面临一个问题:钱要分给谁、分多少、怎么分的问题,今天,商淘云小编与您分享如何选择分账系统。 第一种是银行的分账系统&#xff0c…

1850_emacs_org-download在Windows上的使用

Grey 全部学习内容汇总: https://github.com/greyzhang/g_org 1850_emacs_org-download在Windows上的使用 对我来说,使用emacs很大的一个挑战是在Windows上,emacs的配置会比Linux上麻烦一些。而且,通常来说Windows上的体验会差…

详细了解云堡垒机的作用,提高企业数据信息安全

随着上云企业的不断增加,云上数据安全性成为企业面临的重要问题。为了保障企业的核心数据安全,越来越多的企业采购了云堡垒机来提升数据安全性。今天我们就来详细了解一下云堡垒机的作用,以及如何提高企业数据安全。 一、云堡垒机定义 云堡垒…

【精选】计算机网络教程(第2章网络层)

目录 前言 第2章网络层 1、编码与调制 2、传输方式 前言 总结计算机网络教程课程期末必记知识点。 第2章网络层 1、编码与调制 信道可以分成传送模拟信号的模拟信道和传送数字信号的数字信道两大类。通常人们将数字数据转换成数字信号的过程称为编码,而将数字…

探索 HBase GUI 工具,助您轻松驾驭大数据世界!

你是否曾为 HBase 数据管理而苦恼?别担心,这一款超级好用的 HBase GUI (HBase Assistant)工具,让您在大数据世界中游刃有余。不再需要繁琐的命令行操作,也不再为复杂的配置感到头疼。 主要功能 直观和设计…

matlab面向对象编程入门笔记

文章目录 1. 类和结构2. 定义类3. 属性3.1 private/protected/public属性3.2 constant属性3.3 hidden属性 4. 方法4.1 private/protected/public方法4.2 static方法4.3 外部方法 5. 动态调用6. 继承-超类6.1 handle超类6.2 dynamicprops 和 hgsetget子类 7. 封闭(sealed)类、方…

STM32_通过Ymodem协议进行蓝牙OTA升级固件教程

目录标题 前言1、OTA升级的重要性和应用场景2、理论基础2.1、单片机的启动流程2.2、什么是IAP?2.3、什么是OTA?2.4、什么是BootLoader?2.5、Ymodem协议是什么?2.6、IAP是如何实现的? 3、具体操作3.1、软硬件工具准备3.…

类加载机制

1.类加载的生命周期 其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为…

计算机中msvcr120.dll丢失怎样修复,这5个方法可以搞定

几乎在所有操作系统中,可分为两种库,一种是静态库(.lib),另一种是动态库(.dll)。 为什么很多小伙伴在打开软件的时候会弹出“由于找不到XXX.dll文件,无法继续执行代码、、、、、、”…

大数据技术之 Kettle(PDI)

Kettle 第一章 Kettle概述1.1、ETL简介1.2、Kettle简介1.3、作业 和 转换 概念1.4、核心组件1.5、下载安装 第二章 控件使用2.1、初体验:csv 转换 excel 示例2.2、转换2.2.1、输入控件2.2.1.1、表输入 2.2.2、输出控件2.2.2.1、表输出2.2.2.2、更新&插入/更新2.…

分享66个Java源码总有一个是你想要的

分享66个Java源码总有一个是你想要的 学习知识费力气,收集整理更不易。 知识付费甚欢喜,为咱码农谋福利。 链接:https://pan.baidu.com/s/1hKlZJB3KrHcOuKWyV1xjKw?pwd6666 提取码:6666 项目名称 ava web个人网站项目 ea…

【C++11特性篇】C++11中の【override】【final】关键字——帮助用户检测是否重写

前言 大家好吖,欢迎来到 YY 滴C系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! 目录 一.【override】【final】关键字——帮…

软件测试之鲁棒性测试

文章目录 前言一、鲁棒性测试是什么?二、鲁棒性测试的目的三、测试原理3.1 错误数据处理3.2 异常情况处理 前言 Bootloader软件刷写鲁棒性(Robustness)测试是指对Bootloader软件进行连续多次的刷写测试,且一次Fail都没发生,以此验证Bootload…

基于java+swing+mysq学生成绩管理系统(含课程报告)

基于javaswingmysq学生成绩管理系统_含课程报告 一、系统介绍二、功能展示三、项目相关3.1 乱码问题3.2 如何将GBK编码系统修改为UTF-8编码的系统? 四、其它1.其他系统实现 五、源码下载 一、系统介绍 本系统使用 Swing MySQL IntelliJ IDEA 开发。为管理人员提供…

【精选】计算机网络教程(第3章数据链路层)

目录 前言 第3章数据链路层 1、差错检测(CRC) 2、点对点协议(了解应用场景) 3、什么是碰撞域,什么是广播域 碰撞域(Collision Domain): 广播域(Broadcast Domain&a…

Linux驱动开发学习笔记4《设备树下的LED驱动实验》

目录 一、设备树LED驱动原理 二、硬件原理图分析 三、实验程序编写 1.修改设备树文件 2.LED 灯驱动程序编写 3.编写测试APP 四、运行测试 1. 编译驱动程序和测试APP (1) 编译驱动程序 (2) 编译测试APP ​ 2.运行测试 一、…