Spring 事务传播机制(Propagation)
Spring 事务传播机制Propagation核心概念事务传播行为当一个带有事务的方法 A 调用另一个带有事务的方法 B 时方法 B 如何使用当前已存在的事务。 由Transactional(propagation Propagation.XXX)指定一共 7 种。前提区分调用方外层方法被调用方内层方法7 种传播行为完整说明1. REQUIRED默认Propagation.REQUIRED如果当前存在事务加入该事务没有则新建事务。外层有事务 → 内外层共用同一个事务任何一方异常整体回滚外层无事务 → 内层新建独立事务最常用绝大多数业务场景默认使用。2. SUPPORTS Propagation.SUPPORTS有事务就加入没有事务就以非事务方式运行。外层存在事务加入外层事务外层无事务内层无事务执行不开启事务⚠️ 风险外层没事务时内层 SQL 自动提交出错不会回滚。3. MANDATORY Propagation.MANDATORY强制要求必须存在当前事务没有事务直接抛出异常。外层有事务加入事务外层无事务抛出IllegalTransactionStateException适合内层方法不能独立运行必须依托外层事务的场景。4. REQUIRES_NEW Propagation.REQUIRES_NEW新建独立事务暂停外层已有事务。重点内外层是两个完全独立事务外层有事务挂起外层事务开启内层新事务内层事务提交 / 回滚不影响外层事务外层回滚也不会回滚内层已提交事务典型场景记录操作日志哪怕主事务失败日志也要保存入库。5. NOT_SUPPORTED Propagation.NOT_SUPPORTED不支持事务如果存在事务先挂起事务以非事务执行。外层有事务 → 挂起内层无事务运行外层无事务 → 继续无事务运行内层操作不受事务控制操作即时生效。6. NEVER Propagation.NEVER禁止存在事务如果检测到外层有事务直接抛异常。外层无事务正常非事务执行外层存在事务抛出异常7. NESTED Propagation.NESTED嵌套事务基于保存点Savepoint运行。⚠️ 依赖底层数据库支持MySQL InnoDB 支持外层存在事务创建保存点内层是嵌套子事务内层异常只回滚到保存点外层事务可以选择提交或整体回滚外层异常连带内层一起回滚外层无事务新建事务和REQUIRES_NEW关键区别REQUIRES_NEW两个独立事务互不干涉NESTED属于同一个外层事务下的子事务外层回滚会连带子事务高频面试对比表格传播属性外层有事务外层无事务REQUIRED加入当前事务创建新事务SUPPORTS加入当前事务无事务运行MANDATORY加入当前事务抛异常REQUIRES_NEW挂起外层新建独立事务创建新事务NOT_SUPPORTED挂起外层无事务运行无事务运行NEVER抛异常无事务运行NESTED创建保存点嵌套子事务创建新事务经典坑面试高频同一个类内方法自调用事务传播失效Service public class OrderService { Transactional public void a() { // 直接调用本类b()不走AOP代理传播机制不生效 b(); } Transactional(propagation Propagation.REQUIRES_NEW) public void b(){} }原因内部调用绕过 Spring AOP 代理。解决方案通过上下文获取代理对象调用。try-catch捕获内层异常能否阻止回滚 在REQUIRED共用事务下 内层抛出异常 → 事务标记回滚点即使外层 catch最终依然回滚。 想要外层捕获异常不回滚需要REQUIRES_NEW或者NESTED。使用场景建议常规业务新增 / 修改REQUIRED默认操作日志独立落库主流程失败日志保留REQUIRES_NEW子操作允许单独回滚、主事务可继续执行NESTED方法必须在事务内部执行MANDATORY

相关新闻

UnrealSharp:用C#开发虚幻引擎游戏的核心原理与实践指南

UnrealSharp:用C#开发虚幻引擎游戏的核心原理与实践指南

1. 项目概述:当C#遇见虚幻引擎如果你是一位熟悉C#和.NET生态的开发者,同时又对虚幻引擎(Unreal Engine)的强大表现力心向往之,那么“UnrealSharp”这个名字对你来说,可能就像一扇通往新世界的大门。简单来说…

2026/7/25 6:16:49 阅读更多 →
MSP430FR697x端口复用配置详解:从寄存器原理到实战避坑

MSP430FR697x端口复用配置详解:从寄存器原理到实战避坑

1. 项目概述与核心价值如果你正在使用TI的MSP430FR697x系列微控制器(MCU)进行项目开发,那么你肯定遇到过这样的场景:原理图上密密麻麻的引脚,每个引脚旁边都标注着三四种不同的功能缩写,比如P4.0/UCB1SIMO/…

2026/7/25 6:16:49 阅读更多 →
C++多线程中断机制实战:从原子标志到条件变量与Future

C++多线程中断机制实战:从原子标志到条件变量与Future

1. 项目概述:为什么我们需要“中断”线程?在C多线程的世界里,我们常常会遇到这样的场景:你启动了一个后台线程去执行一个耗时任务,比如监控网络连接、定期清理日志,或者执行一个复杂的计算。突然&#xff0…

2026/7/25 6:16:49 阅读更多 →

最新新闻

CLIP与LLM融合:可解释视觉模型的思维革命

CLIP与LLM融合:可解释视觉模型的思维革命

1. 论文核心创新解析:当CLIP遇上LLM的思维革命这篇获得AAAI 2026杰出论文奖的研究,本质上解决了计算机视觉领域一个存在多年的根本矛盾——传统CLIP模型虽然具备强大的图像-文本对齐能力,但其推理过程就像个"直觉型天才"&#xff0…

2026/7/25 6:29:53 阅读更多 →
C++实战:从零构建跨平台MP3播放器(libmpg123+libao)

C++实战:从零构建跨平台MP3播放器(libmpg123+libao)

1. 项目概述与核心价值最近在整理一些老项目,翻到了一个大学时期用C写的简易MP3播放器。虽然现在各种音乐软件功能强大,界面华丽,但对于学习C,尤其是想深入理解多媒体编程、音频处理以及跨平台开发的同学来说,自己动手…

2026/7/25 6:29:53 阅读更多 →
YOLOv26在医疗骨折识别中的高效应用与优化

YOLOv26在医疗骨折识别中的高效应用与优化

1. 项目背景与核心价值在医疗影像诊断领域,骨折识别一直是个耗时且依赖经验的工作。传统方式需要放射科医生逐帧查看X光片或CT扫描图像,不仅效率低下,还容易因视觉疲劳导致漏诊。这个基于YOLOv26的骨折识别系统,正是为了解决这个痛…

2026/7/25 6:29:53 阅读更多 →
DP83867以太网PHY芯片三大核心功能:流量控制、环回测试与TDR电缆诊断详解

DP83867以太网PHY芯片三大核心功能:流量控制、环回测试与TDR电缆诊断详解

1. 项目概述:从寄存器到链路,深入理解DP83867的三大核心功能在嵌入式网络设备开发,尤其是工业控制、车载网关或高端交换机领域,选型一颗功能强大的以太网PHY芯片往往意味着项目成功了一半。德州仪器(TI)的D…

2026/7/25 6:29:53 阅读更多 →
AI自动化视频生产系统:从素材到多平台发布的完整解决方案

AI自动化视频生产系统:从素材到多平台发布的完整解决方案

1. 项目背景与核心价值去年处理一个商业项目时,客户要求每天产出20条不同风格的短视频。传统剪辑流程需要3个剪辑师轮班工作,人力成本高且效率低下。这促使我开始探索自动化视频生产的可能性。经过半年迭代,这套基于AI Agent的自动化系统现在…

2026/7/25 6:29:52 阅读更多 →
AI意识争议:技术原理与伦理边界解析

AI意识争议:技术原理与伦理边界解析

1. 项目概述:AI意识争议的技术与伦理边界上周AI领域爆出一条重磅消息:Anthropic公司首席科学家在内部会议上表示,其开发的Claude模型"可能具有某种形式的意识"。这个表述立即在科技圈引发轩然大波,有人称之为"打开…

2026/7/25 6:28:52 阅读更多 →

日新闻

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存

突破文档下载限制:kill-doc让你看到的都能保存 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的…

2026/7/25 0:00:35 阅读更多 →
C++ string类模拟实现:从深拷贝到内存管理的完整指南

C++ string类模拟实现:从深拷贝到内存管理的完整指南

1. 项目概述:为什么我们要“手撕”string类?在C的学习道路上,尤其是从C语言过渡到C的“初阶”阶段,string类绝对是一个绕不开的核心。标准库里的std::string用起来太方便了,、find、substr,几个操作符和函数…

2026/7/25 0:00:35 阅读更多 →
三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

三角洲寻宝鼠工具:高效文件搜索与资源管理实战指南

1. 先搞清楚“三角洲寻宝鼠”到底是什么工具从名称来看,“三角洲寻宝鼠”更像是一个资源查找或文件检索类工具,而不是游戏或娱乐软件。这类工具的核心价值在于帮助用户快速定位特定资源,比如文档、图片、压缩包或特定格式的文件。如果你经常需…

2026/7/25 0:00:35 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/25 5:08:22 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/25 5:13:53 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/24 18:52:18 阅读更多 →

月新闻