跳到正文

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当成操作清单,不替代正文

推荐顺序 ​

  1. 01 → 02 → 03 → 04:先理解容器怎样创建和注入对象,再看事务如何借助代理生效,然后看 Boot 如何批量装配,最后看 Web 层如何调用业务 Bean。
  2. 01 → 03:如果当前工作主要是排查“Bean 没注入”“自动配置没生效”,可以跳过事务和 MVC,先读这两篇。
  3. 02 → 04:如果当前工作主要是接口报错、事务不回滚,按“事务边界 → 请求链路”的顺序读。
  4. 读完任一篇后过一遍 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 数据与存储。

维护约定:新增正文篇目时同步更新本页表格与推荐顺序;删除篇目时先合并独有内容,再清理本页和相邻目录的链接。

把一门技术讲透到既懂也会用