Spring 事务:传播行为与失效场景
2026/8/22大约 2 分钟
分布式事务系列 · 阶段 0 · 事务地基 · 第 4/49 篇 · 🚧 占位待学
上一篇:《InnoDB 日志体系:redo、undo 与内部两阶段提交》
下一篇:《本地事务的天花板:跨库跨服务为什么失灵》
学习大纲:《分布式事务学习总纲》
状态:待学习。 本文为占位文档:知识点清单、实验与验收标准已就绪,正文待按「先学习、先实验、再撰写」补全。
对应总纲单元:阶段 0 · 单元 0.4
一、本文要解决的问题
@Transactional 依赖什么机制生效?七种传播行为分别在解决什么?为什么实际项目里它总是"莫名失效"?把单机事务的最后一层(应用层)补齐,下一章就能引出跨库失灵的边界问题。
二、知识点清单
- Spring 事务抽象:PlatformTransactionManager 与 TransactionDefinition
- 声明式事务与 AOP 代理的关系(事务注解为什么加在代理上才生效)
- 七种传播行为的语义与典型使用场景(重点 REQUIRED / REQUIRES_NEW / NESTED)
- 常见失效场景:同类自调用、非 public 方法、异常被 catch 吞掉、抛受检异常、多线程
三、动手实验(学习时必须真跑)
- 写出「同类方法自调用导致事务失效」的最小复现项目
- 用注入自身代理 / AopContext.currentProxy() 修复,验证生效
四、验收标准(全部通过才进入下一篇)
五、写作提示(补正文时遵守)
- 开篇问题驱动;结构走「是什么 → 为什么 → 怎么做 → 背景知识」
- 所有代码、命令、输出必须先在本机跑通再写入,不得杜撰
- 版本口径以总纲环境清单为准(Apache Seata 2.6.0 / MySQL 8.0 / RocketMQ 5.x / Spring Boot 3.x)
- 涉及版本敏感结论时标注出处与时间
本篇完成后,把文首导航块的「🚧 占位待学」去掉,并在总纲处打卡。