Spring 事务 7 种传播行为
一、基础概念事务传播行为多个事务方法互相调用时事务如何传递、创建、复用的规则当方法 A 调用方法 BA、B 都带有Transactional传播行为决定 B 是沿用 A 的事务、新建事务、还是不使用事务。核心入口TransactionDefinition接口定义 7 个常量Transactional(propagation Propagation.REQUIRED)指定。二、7 种传播行为完整详解执行逻辑 场景 区别1. REQUIRED默认值最常用规则如果当前存在事务外层有事务复用外层事务内外是同一个事务如果当前无事务自己新建一个独立事务。执行案例外层无事务 → 新建事务执行 B外层 A 有事务 → B 加入 A 事务A/B 任意一处异常整体一起回滚。适用场景90% 普通业务增删改订单、用户、库存所有操作必须同生共死。2. REQUIRES_NEW规则永远创建全新独立事务不管外层是否存在事务外层事务会被挂起等内层新事务执行完成后再恢复外层事务。 内外两个事务完全隔离互不影响。执行案例A (REQUIRED) 调用 B (REQUIRES_NEW)A 开启事务执行到 B 时挂起 A 事务B 新建独立事务B 正常提交 / 异常回滚都不会影响 AB 执行完毕恢复 A 事务继续执行后续 A 抛异常回滚不会回滚 B 已经提交的数据。适用场景日志记录、操作流水、异步记录。 例下单失败回滚订单但需要保存失败日志日志不能跟着订单一起回滚日志方法使用REQUIRES_NEW。3. SUPPORTS规则当前有事务沿用外层事务当前无事务直接以非事务方式执行无事务。适用场景查询类接口select。查询不需要事务若外层有事务查询嵌套在更新业务里则加入外层事务保证数据一致性。4. NOT_SUPPORTED规则强制以非事务运行如果外层存在事务直接挂起外层事务内层方法无事务执行。适用场景大数据导出、批量查询、读取海量数据不需要事务同时不占用外层事务连接。例事务中导出百万条数据避免长时间占用数据库事务连接。5. MANDATORY强制规则必须存在外层事务否则直接抛出异常不能单独运行。适用场景子业务必须依赖外层主事务禁止单独调用。例扣减库存逻辑必须嵌套在创建订单主事务中禁止外部单独调用扣库存方法。6. NEVER规则绝对不允许存在外层事务如果外层存在事务直接抛异常无外层事务则正常无事务执行。适用场景明确禁止被事务包裹的方法。例批量删除历史归档数据逻辑独立不允许嵌套在其他事务中导致长事务锁表。7. NESTED嵌套事务规则外层无事务新建独立事务等价于 REQUIRED外层存在事务创建嵌套子事务保存点 SavePoint不是独立新事务。核心特性和 REQUIRES_NEW 最大区别子事务回滚只会回滚到自身保存点不会导致外层事务回滚外层事务回滚会连带所有嵌套子事务一起全部回滚共用同一个数据库连接没有挂起事务操作。适用场景主业务流程下存在多个可独立回滚的子步骤。例创建订单主流程包含「生成订单、发放优惠券、扣积分」三个子操作优惠券发放失败只回滚优惠券不回滚订单但如果订单创建失败优惠券、积分全部回滚。三、REQUIRES_NEW VS NESTED 高频对比面试必问表格对比维度REQUIRES_NEWNESTED事务关系两个完全独立事务互不影响外层主事务 子保存点从属关系数据库连接新建连接外层事务挂起共用同一个数据库连接内层回滚内层回滚外层事务不受任何影响内层回滚仅回滚自身外层可继续提交外层回滚外层回滚不影响已提交的内层事务外层回滚所有嵌套子事务全部回滚底层原理独立事务独立 commit/rollback基于 JDBC SavePoint 保存点实现四、7 种传播行为快速速查表表格传播行为外层有事务外层无事务核心特点REQUIRED默认加入外层事务新建事务同生共死通用REQUIRES_NEW挂起外层新建独立事务新建事务内外完全隔离SUPPORTS加入外层事务无事务执行适合查询NOT_SUPPORTED挂起外层无事务执行无事务执行大数据查询导出MANDATORY加入外层事务直接抛异常必须嵌套事务调用NEVER直接抛异常无事务执行禁止嵌套在事务中NESTED创建保存点子事务新建事务子事务可单独回滚外层回滚连带子事务五、企业开发使用规范增删改业务默认REQUIRED记录操作日志、异常流水REQUIRES_NEW单纯查询接口SUPPORTS大数据批量读取 / 导出NOT_SUPPORTED底层子操作不允许单独调用MANDATORY归档清理、独立批量操作NEVER主流程下多步骤可局部回滚NESTED六、高频面试题补充NESTED 依赖数据库支持吗需要底层 JDBC 驱动支持 SavePoint 保存点MySQL、Oracle 均支持。为什么日志要用 REQUIRES_NEW不用 NESTED业务操作失败回滚时日志需要永久留存NESTED 外层回滚会连带日志一起回滚无法保存日志因此日志场景必须用 REQUIRES_NEW。MANDATORY 和 NEVER 的区别MANDATORY必须有外层事务无事务报错 NEVER绝对不能有外层事务有事务报错。两者约束完全相反。

相关新闻

快速本地部署SuperGemma4-26B无审查AI模型:5分钟完成高性能推理

快速本地部署SuperGemma4-26B无审查AI模型:5分钟完成高性能推理

快速本地部署SuperGemma4-26B无审查AI模型:5分钟完成高性能推理 【免费下载链接】supergemma4-26b-uncensored-gguf-v2 项目地址: https://ai.gitcode.com/hf_mirrors/Jiunsong/supergemma4-26b-uncensored-gguf-v2 想要在本地快速部署一个强大且无审查的AI…

2026/9/29 19:39:46 阅读更多 →
DAB学习心得(G474_RX.c)

DAB学习心得(G474_RX.c)

DAB学习心得(G474_RX.c)

2026/10/4 16:49:13 阅读更多 →
LinkSwift:九大网盘直链下载助手完全指南,轻松突破下载限制

LinkSwift:九大网盘直链下载助手完全指南,轻松突破下载限制

LinkSwift:九大网盘直链下载助手完全指南,轻松突破下载限制 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国…

2026/10/12 1:33:11 阅读更多 →

最新新闻

iOS卡片堆叠无限滑动实现:布局引擎与交互管道解耦方案

iOS卡片堆叠无限滑动实现:布局引擎与交互管道解耦方案

1. 项目概述:为什么“卡片堆叠无限滑动”成了iOS界面设计的高频刚需你打开一个天气App,手指轻扫,今天、明天、后天的预报像扑克牌一样层层叠叠滑过;你刷一款旅行推荐应用,每张目的地卡片从底部缓缓浮起,滑到…

2026/10/16 4:31:21 阅读更多 →
OpenClaw三平台部署实战:Windows/macOS/Linux完整安装指南

OpenClaw三平台部署实战:Windows/macOS/Linux完整安装指南

OpenClaw 这套环境搭建,我在 2026 年初又把三种主流系统完整跑了一遍。Windows 笔记本、macOS 工作台、还有一台 Linux 服务器,全部从零开始部署,中间踩了不少坑,也整理出一套基本不会再出错的流程。这篇文章就是把这次的实测过程…

2026/10/16 4:31:21 阅读更多 →
STM32嵌入式频谱分析实战:FFT+THD+频谱图全链路实现

STM32嵌入式频谱分析实战:FFT+THD+频谱图全链路实现

简介:本资源是一套基于STM32F103ZET6(正点原子精英版)的嵌入式信号分析实战项目,面向单片机开发初学者与数字信号处理进阶学习者,解决嵌入式端实时FFT频谱分析、THD失真度计算及LCD图形化显示等核心工程问题。压缩包共…

2026/10/16 4:31:21 阅读更多 →
Data Pipeline设计实战:从确定性、可观测性到可演进性

Data Pipeline设计实战:从确定性、可观测性到可演进性

1. 项目概述:这不是“管道”,而是一条数据流动的高速公路“Data Pipeline”这个词,最近在技术社区、招聘JD和内部立项文档里出现频率高得有点反常——但它绝不是什么新造概念,更不是某个厂商包装出来的营销话术。我带过不下二十个…

2026/10/16 4:31:21 阅读更多 →
R语言ggpointdensity密度散点图:解决大数据过绘制问题

R语言ggpointdensity密度散点图:解决大数据过绘制问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 4:31:21 阅读更多 →
从视频自动提取可编辑PPT:OCR识别与版面还原的完整本地方案

从视频自动提取可编辑PPT:OCR识别与版面还原的完整本地方案

上周组会之前,我对着一段将近两小时的学术讲座录像发愁。导师让我把PPT页面整理成汇报材料,这意味着我要反复拖动进度条,暂停、截图、去水印、裁剪,最后把几十张图片按顺序贴进一个新的PPT里。这活儿干了半小时我就想拍桌子&#…

2026/10/16 4:30:21 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →