Skip to content

Spring 全栈硬核教程 · 总纲:生态全景图与学习路线 ​

这是一套什么教程:市面上 Spring 教程的通病是"盲人摸象"——讲 Boot 的不提 Framework 底座,讲 Cloud 的默认你已经懂 Boot,讲 Security 的直接甩配置代码。这套教程反过来,先给你一张完整地图,再逐块深挖,每块都回答三个问题:它解决什么问题 / 它底层怎么实现 / 什么场景不该用它。

适合谁:想系统建立 Java 后端知识体系的学生;写了几年 Spring 但对"为什么这样设计"说不清楚的工程师;要做技术选型、带团队、或者要把这套东西讲给别人听的人。

版本基准(2026 年 9 月):Spring Framework 7 / Spring Boot 4.1 / Spring Security 7.1 / Spring Cloud 2025.1.x(Oakwood)。所有代码和结论都按这一代技术栈写,涉及与 Boot 3.x 差异的地方会显式标注——因为你大概率手上还有一堆 3.x 的存量项目要维护。


系列目录 ​

篇章主题核心问题
00 总纲(本篇)生态全景、版本矩阵、学习路线Spring 到底有多少东西?我该按什么顺序学?
01 Spring 核心IoC / DI / AOP / 事务 / 事件 / SpEL容器里到底发生了什么?
02 Spring Boot自动配置 / Starter / 配置 / Actuator / 测试"约定优于配置"的魔法怎么实现的?
03 Spring WebMVC / WebFlux / REST / WebSocket / 客户端一个 HTTP 请求的完整生命周期
04 Spring DataJPA / MyBatis / Redis / R2DBC / 事务传播数据怎么进出,怎么不出错
05 Spring Security认证 / 授权 / OAuth2 / JWT / 国产替代对比谁能进来,能干什么
06 Spring Cloud注册发现 / 网关 / 熔断 / 配置中心 / 链路追踪一个服务变成一百个之后怎么办
07 前沿与扩展Spring AI / Batch / Modulith / GraalVM / 虚拟线程2026 年该关注什么
08 实战与避坑完整项目 / 性能调优 / 面试题 / 生产事故复盘怎么真正用起来不翻车

1. Spring 生态全景图:先看清楚象长什么样 ​

很多人对 Spring 的认知是"一堆 starter",这是被 Spring Boot 的便利性宠坏的结果。真实的层次是这样的:

┌─────────────────────────────────────────────────────────────┐
│  应用层扩展:Spring AI / Batch / Integration / Modulith /     │
│              Session / Shell / GraphQL / Kafka / AMQP        │
├─────────────────────────────────────────────────────────────┤
│  Spring Cloud(分布式):Gateway / OpenFeign / Config /       │
│                          Circuitbreaker / Stream / Bus       │
│  Spring Cloud Alibaba:Nacos / Sentinel / Seata(国内主流)   │
├─────────────────────────────────────────────────────────────┤
│  能力模块:Spring Web(MVC/WebFlux) │ Spring Data │            │
│            Spring Security │ Spring Test                     │
├─────────────────────────────────────────────────────────────┤
│  Spring Boot:自动配置 + Starter + 内嵌容器 + Actuator        │
│  (不是新框架,是"把下面这层用顺手"的引导层)                 │
├─────────────────────────────────────────────────────────────┤
│  Spring Framework(地基):IoC 容器 / AOP / 事务抽象 /        │
│                            资源抽象 / 事件 / SpEL / 类型转换  │
├─────────────────────────────────────────────────────────────┤
│  JVM + Jakarta EE 11(Servlet 6.1 / JPA / Validation)       │
└─────────────────────────────────────────────────────────────┘

最关键的认知(很多工作三五年的人都还没建立起来):

Spring Boot 不是一个框架,它是一层"引导与装配"机制。 你用 @RestController 写接口,干活的是 Spring MVC(spring-webmvc);你用 @Transactional,干活的是 Spring Framework 的事务抽象 + AOP;Spring Boot 做的事只是"帮你把这些东西按约定装配好,并且在你没有自定义时给一套合理默认值"。

这个认知的实用价值在于:排查问题时你知道该去哪一层找。接口 404 是 MVC 的 HandlerMapping 问题,事务不回滚是 Framework 的 AOP 代理问题,依赖版本冲突是 Boot 的 BOM 仲裁问题——三层三种排查思路,混在一起想就永远是玄学。


2. 2026 年版本矩阵:先把版本对齐,再写代码 ​

Spring 生态最大的坑不是技术难,是版本不对齐。下面这张表建议直接收藏:

组件当前主线版本底层依赖 / 兼容基线
Spring Framework7.0.xJDK 17 基线(官方推荐 JDK 25 LTS),Jakarta EE 11,Kotlin 2.2,GraalVM 24
Spring Boot4.1.x(2026.6);4.0.x(2025.11)Spring Framework 7,Servlet 6.1(Tomcat 11+ / Jetty 12.1+)
Spring Security7.1.x(7.0 随 Boot 4 发布)Spring Framework 7
Spring Cloud2025.1.x(代号 Oakwood)基于 Spring Boot 4.0.x,兼容 4.1.x;下一列车 2026.0.0(Paddington)对应 Boot 4.2
Spring AI1.x 稳定版;2.0 里程碑阶段2.0 基于 Spring Boot 4
Java21 LTS(生态最成熟)/ 25 LTS(最新)Boot 4 最低 17

血泪提醒:三个必须记住的版本事实 ​

  1. Spring Boot 3.5 是 3.x 最后一个版本,社区免费支持已于 2026 年 6 月 30 日结束。还在 3.x 的项目该排升级计划了——不是明天就炸,但安全补丁不再免费供应。
  2. Spring Cloud 2025.0.0 与 Spring Boot 4.0.1+ 不兼容,必须用 2025.1.x 列车。这类"看起来版本号很接近其实互相打架"的情况在 Spring Cloud 上是常态,任何时候引入 Spring Cloud,先查官方兼容矩阵,别凭感觉选版本号。
  3. Undertow 在 Spring Framework 7 被移除支持,因为它还没适配 Servlet 6.1。如果你的项目用 Undertow 作内嵌容器,升级前先规划换 Tomcat 或 Jetty。

Boot 3 → Boot 4 迁移的主要断点(存量项目必看) ​

变更影响
Servlet 6.1 基线必须 Tomcat 11+ / Jetty 12.1+,Undertow 出局
spring-jcl 模块移除改用 Apache Commons Logging 1.3.0,多数应用无感
javax.annotation / javax.inject 注解支持移除还有残留 javax.* 的代码必须清理干净
ListenableFuture 移除改用 CompletableFuture
OkHttp3 支持移除客户端改用 RestClient / JDK HttpClient
Spring MVC 的 <mvc:*> XML 命名空间弃用老 XML 配置项目需要转 Java Config
Spring Security 7:and() 移除、authorizeRequests 移除所有安全配置必须改成 Lambda DSL + authorizeHttpRequests
代码库模块化拆分部分类的包路径/artifact 归属变了,编译报错时先查迁移指南

一句话:Boot 3→4 不是"改个版本号",工作量介于 Boot 2→3(Jakarta 大迁移)和常规小版本升级之间。给存量项目做升级评估时,按"每个中型服务 3-5 人日"起估比较现实。


3. 学习路线:六个阶段,别跳级 ​

这套教程按下面的节奏设计,强烈建议按顺序——跳过第二阶段直接学 Cloud 的人,最后都会回来补课。

阶段一 · 会用(1-2 周)
  目标:能独立写出一个带 CRUD + 登录的单体服务
  内容:Boot 起步 → Web 层基础 → 数据访问基础
  产出:一个能跑的图书管理系统
  ⚠️ 这个阶段最大的陷阱是"以为自己学会了"——你只是学会了抄 API

阶段二 · 懂原理(2-4 周,⭐ 分水岭)
  目标:能解释清楚"Spring 在背后做了什么"
  内容:IoC 容器与 Bean 生命周期 → AOP 与动态代理 → 自动配置机制
        → DispatcherServlet 请求链路 → 事务传播与失效场景
  检验标准:能徒手画出 Bean 生命周期图,能说清 @Transactional 的 7 种失效场景
  ⚠️ 90% 的人卡在这里不上不下,这也是面试能不能过的真正分水岭

阶段三 · 能做完整业务(3-4 周)
  内容:Security 认证授权 → 缓存设计 → 参数校验与异常体系
        → 文件上传/导出 → 定时任务 → 消息队列集成
  产出:一个有权限体系、有缓存、有异步处理的完整服务

阶段四 · 能做架构决策(4-6 周)
  内容:MVC vs WebFlux 选型 → 单体 vs 微服务判断 → Spring Cloud 全家桶
        → 分布式事务 → 服务治理
  检验标准:面对一个新需求,能说出"为什么选 A 不选 B"并给出量化依据

阶段五 · 能上生产(持续)
  内容:可观测性三支柱 → 性能调优 → 容器化与 K8s → 灰度与回滚
        → 故障演练与复盘
  ⚠️ 这个阶段的知识只能在真实事故里长出来,看书学不会

阶段六 · 能带人、能创新(持续)
  内容:前沿特性跟踪(虚拟线程/GraalVM/Spring AI)→ 自研 Starter 与内部框架
        → 技术方案评审 → 把复杂的东西讲简单

不同背景的人怎么走这条路 ​

你的背景建议起点特别注意
零基础学生阶段一完整走完别急着学微服务,把单体写扎实比什么都强
会 Go / Python 的转岗者阶段一快速过,重点在阶段二Spring 的"重框架"哲学和 Go 的"显式组装"完全相反,心态上要接受"框架帮你做了很多事"
三五年 Spring 经验直接从阶段二开始查漏你大概率会发现自己对 Bean 生命周期、事务传播、代理机制的理解有漏洞——这不丢人,这是行业常态
架构师 / 技术负责人阶段四 + 阶段五 + 07 篇前沿重点看各章的对比表和选型框架,那是给你准备的

4. 这套教程的"硬核"体现在哪 ​

为了让你知道后面有什么值得期待,先剧透几个各篇里最硬的知识点:

  • 01 篇:三级缓存解决循环依赖,为什么非要三级不能两级?(答案和 AOP 代理的时机有关)
  • 02 篇:自动配置的发现机制从 spring.factories 换成 .imports 文件,不只是换个文件名,背后是为 AOT 编译铺路
  • 03 篇:HandlerMethodArgumentResolver 机制——教你写一个 @CurrentUser 注解,从此告别每个方法里手写 SecurityContextHolder
  • 04 篇:事务传播行为的七种模式,配一张"什么场景用哪种"的决策表,以及 REQUIRES_NEW 在高并发下的连接池陷阱
  • 05 篇:Spring Security 过滤器链的完整顺序,以及为什么你的自定义 Filter 加在错误的位置会导致"认证信息莫名其妙丢了"
  • 06 篇:分布式事务四种方案(2PC / TCC / Saga / 本地消息表)的真实成本对比——以及"大部分场景其实不需要分布式事务"的反直觉结论
  • 07 篇:虚拟线程和 Go Goroutine 的调度模型对比,以及虚拟线程如何动摇了"高并发必上 WebFlux"的旧共识
  • 08 篇:真实生产事故复盘——连接池打满、缓存雪崩、线程池拒绝、内存泄漏,每个都给出排查路径

5. 学习资源与工具清单 ​

必备工具 ​

类型推荐说明
IDEIntelliJ IDEAUltimate 版对 Spring 的支持(Bean 依赖图、端点视图)值回票价;社区版够用但少一些便利
构建Maven(入门)/ Gradle(大项目)教学场景一律 Maven,错误信息更直观
接口调试Apifox / Bruno / curlPostman 越来越重,国内团队 Apifox 用得多
压测JMeter / wrk / k6性能调优章节会用到
诊断Arthas阿里开源的 JVM 在线诊断神器,生产排查必备
容器Docker Desktop / OrbStackTestcontainers 和本地中间件都要用

权威信息源(按可靠性排序) ​

  1. 官方文档 docs.spring.io —— 唯一权威,第三方教程都会过时
  2. GitHub Release Notes —— 想知道某个版本到底改了什么,看这里比看博客准
  3. Spring 官方博客 spring.io/blog —— 新特性的设计意图通常在这里讲得最清楚
  4. Baeldung —— 英文世界最系统的 Spring 教程站
  5. 中文技术博客 —— 有价值但务必核对版本,中文圈大量文章还停留在 Boot 2.x 时代

6. 给不同读者的阅读建议 ​

如果你是学生:按 00 → 01 → 02 → 03 → 04 顺序读,每篇读完必须动手把代码敲一遍(不是复制粘贴,是敲)。05 之后的内容第一遍可以只看对比表,建立印象即可,等有项目经验再回头精读。

如果你有 3 年以上经验:直接跳到各篇的「硬核细节」和「对比选型」小节,用它们查漏。特别推荐 01 篇的代理机制、04 篇的事务传播、06 篇的分布式事务成本对比——这三处是经验丰富的工程师也经常有盲区的地方。

如果你要拿这套东西讲课/带新人:每篇末尾的「常见误解」和「事故复盘」是最好的课堂素材,比讲 API 有意思得多。另外 08 篇的面试题可以直接当作阶段性考核。


下一篇(01 · Spring 核心):我们从容器开始——一个 Bean 从 class 文件到可用对象,中间到底经过了多少道工序?为什么 @Transactional 在同类方法里调用会失效?AOP 的 JDK 动态代理和 CGLIB 到底该选哪个?这些问题的答案,构成了整个 Spring 世界的物理定律。

基于 Vite 强力驱动 | 纯静态轻量托管