Skip to content

03 — 事务管理

定位: Spring 声明式事务与编程式事务的底层原理和源码实现 面试高频度: ⭐⭐⭐⭐⭐

一、板块在体系中的位置

┌──────────────────────────────────────────────┐
│            事务管理在 Spring 中的位置            │
│                                                │
│  01. IoC 容器 (基础设施)                        │
│    ↓                                            │
│  02. AOP (提供事务拦截机制)                      │
│    ↓                                            │
│  03. 事务管理 (本板块) ← 基于 AOP + IoC         │
│    ↓                    ↓                       │
│  04. Spring MVC       06. 数据访问               │
│  (请求事务)           (JPA事务)                  │
│    ↓                    ↓                       │
│  05. Spring Boot      08. Spring Cloud          │
│  (自动配置事务)        (分布式事务 Seata)         │
└──────────────────────────────────────────────┘

事务管理是 Spring AOP 最经典的应用,整合了 PlatformTransactionManager 抽象、AOP 拦截、ThreadLocal 线程绑定三大技术。

二、知识全景图

┌─────────────────────────────────────────────┐
│           事务管理核心知识体系                  │
│                                              │
│  ┌──────────────────────────────────────┐   │
│  │  1. 核心架构 (三大顶级接口)             │   │
│  │  PlatformTransactionManager           │   │
│  │  TransactionDefinition                │   │
│  │  TransactionStatus                    │   │
│  └──────────────────────────────────────┘   │
│                    ↓                        │
│  ┌──────────────────────────────────────┐   │
│  │  2. 声明式事务 AOP 实现               │   │
│  │  TransactionInterceptor → 源码分析     │   │
│  │  DataSourceTransactionManager         │   │
│  └──────────────────────────────────────┘   │
│                    ↓                        │
│  ┌──────────────────────────────────────┐   │
│  │  3. 传播行为与隔离级别                 │   │
│  │  7种传播行为 · 5种隔离级别              │   │
│  │  挂起与恢复机制                        │   │
│  └──────────────────────────────────────┘   │
│                    ↓                        │
│  ┌──────────────────────────────────────┐   │
│  │  4. 高级特性                           │   │
│  │  回滚规则 · 只读优化 · 同步器机制        │   │
│  │  NESTED 保存点 · 声明式 vs 编程式        │   │
│  └──────────────────────────────────────┘   │
└─────────────────────────────────────────────┘

三、子专题导航

#主题面试频率核心内容
**03.1-事务核心架构**⭐⭐⭐⭐PlatformTransactionManager 三大接口、三种核心实现、DataSource vs JPA vs Hibernate
**03.2-声明式事务源码分析**⭐⭐⭐⭐⭐TransactionInterceptor → invokeWithinTransaction → doBegin/commit/rollback 完整源码
**03.3-传播行为与隔离级别**⭐⭐⭐⭐⭐7种传播行为源码对比、5种隔离级别、挂起恢复时序、各传播行为是否新建连接
**03.4-事务高级特性**⭐⭐⭐⭐回滚规则(rollbackOn深度匹配)、只读(readOnly)双层面优化、TransactionSynchronizationManager、声明式 vs 编程式事务对比

四、核心考点速记

考点 1:事务传播行为执行流程

REQUIRED(默认):有则加入,无则创建 → 同一 Connection
REQUIRES_NEW:   挂起当前 → 新建 Connection → 执行 → 恢复
NESTED:         创建 JDBC Savepoint → 可部分回滚
NOT_SUPPORTED:  挂起当前 → 非事务执行

考点 2:REQUIRES_NEW 真的新建物理连接吗?

。suspend() 解绑当前线程的 ConnectionHolder → doBegin() 从连接池获取新连接 → 绑定到线程。如果连接池只有 1 个连接,会阻塞等待。

考点 3:Spring 事务回滚默认行为

只回滚 RuntimeException 和 Error。checked exception 默认不回滚。通过 rollbackFor = Exception.class 可覆盖。

📚 相关板块

  • **IoC 容器** — 事务管理器作为 Bean 注入容器
  • **AOP 板块** — @Transactional 通过 AOP 拦截实现
  • **数据访问** — JPA/Hibernate 与事务管理器的配合

📚 相关链接

  • **Spring文库设计文档** — 文库设计总纲

Knowledge4J — Java 知识库