主题
Spring 框架学习路线
本目录只回答四个问题:容器怎么把 Bean 装配起来、事务为什么有时不生效、Spring Boot 为什么引入依赖就能用、一个 HTTP 请求怎么走到 Controller。
适用版本:Spring Framework 6.x / Spring Boot 3.x。版本差异以官方文档为准。
读前准备
- 能在本机启动一个 Spring Boot 3.x 工程,使用 JDK 17。
- 知道 Bean、依赖注入、动态代理的基本概念;不要求读过 Spring 源码。
- 示例中的 Actuator 端点需要引入
spring-boot-starter-actuator。
bash
java -version # 期望 17 或更高
mvn -v # 期望 Maven 3.9+篇目
| 篇 | 回答的问题 | 前置 | 建议阅读方式 |
|---|---|---|---|
| 01-IoC容器原理 | BeanDefinition 怎么变成可用 Bean;循环依赖的边界在哪 | Java 反射、注解 | 先读机制,再跑最小验证 |
| 02-事务管理 | @Transactional 靠什么生效;传播行为怎么选 | 01、JDBC 事务基础 | 对照传播行为表读代码 |
| 03-Boot自动装配 | 自动配置类从哪来、条件怎么过滤、启动时序如何 | 01、02 | 用 --debug 对照条件报告 |
| 04-MVC请求链路 | 请求如何找到 Handler、参数和返回值如何转换 | Servlet、HTTP 基础 | 用 curl 和 DEBUG 日志验证 |
| 99-生产检查清单 | 上线前、运行中、故障时各查什么 | 01–04 | 当成操作清单,不替代正文 |
推荐顺序
- 01 → 02 → 03 → 04:先理解容器怎样创建和注入对象,再看事务如何借助代理生效,然后看 Boot 如何批量装配,最后看 Web 层如何调用业务 Bean。
- 01 → 03:如果当前工作主要是排查“Bean 没注入”“自动配置没生效”,可以跳过事务和 MVC,先读这两篇。
- 02 → 04:如果当前工作主要是接口报错、事务不回滚,按“事务边界 → 请求链路”的顺序读。
- 读完任一篇后过一遍 99:清单只写代价高的动作,机制解释仍在正文。
每篇的验证动作
| 篇 | 读完应当能独立完成 |
|---|---|
| 01 | 用一段最小代码复现“字段注入可解、构造器注入启动失败”的循环依赖 |
| 02 | 用两个 Service 验证 REQUIRED 与 REQUIRES_NEW 的回滚范围差异 |
| 03 | 用 --debug 或 Actuator conditions 解释某个自动配置为什么生效/不生效 |
| 04 | 用 curl -i 观察 200、400、405、415 分别由链路哪一环产生 |
与相邻目录的关系
- Java 基础:12_Java 提供反射、动态代理、注解和线程基础;本目录不重复讲这些机制。
- MyBatis:24_MyBatis 的 Mapper 代理、事务整合依赖本目录的 IoC 与事务模型。
- Spring Cloud:10_SpringCloud 是 Spring 之上的微服务治理;排查底层 Bean 与事务问题时回到本目录。
- Netty:23_Netty 是网络层;Spring WebFlux/Gateway 的底层网络模型在那边展开。
- 设计模式:25_设计模式 讲模式本身;本目录只讲 Spring 在哪些扩展点用了它们。
版本与前提
- 示例默认 Spring Boot 3.x + Java 17;Spring Framework 6.x 要求 Java 17 起步。
- 循环依赖默认禁止始于 Spring Boot 2.6(
spring.main.allow-circular-references=false),3.x 延续该默认值。 - 自动配置候选文件在 Spring Boot 2.7+ / 3.x 是
META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports;2.7 之前的spring.factories写法在 3.0 已不再用于自动配置。 - 事务传播、隔离级别的最终行为由数据库和事务管理器共同决定,正文会标出适用前提。
不在本目录展开
- AOP 的完整语法、切点表达式和通知类型:属于 AOP 专题,本目录只在“代理在哪个扩展点生成”处提及。
- Spring Cloud 的注册、配置、网关、熔断:见 10_SpringCloud。
- 设计模式的分类与案例:见 25_设计模式。
- 具体数据库的锁与 MVCC:见 S03 数据与存储。
维护约定:新增正文篇目时同步更新本页表格与推荐顺序;删除篇目时先合并独有内容,再清理本页和相邻目录的链接。