《Spring Boot 入门》目录
这一页是全书的总入口。它不只列出章节标题,还给出三条可以照着走的阅读路径,以及每一节的定位说明。如果你不确定从哪开始,先读下面的「读者画像与前置知识」,再对照「学习路径」选一条;如果你已经有明确目标,可以直接跳到「分部分章节」按编号定位。
全书结构是:前置 3 篇 + 正文 18 章 54 节 + 附录 4 篇,共 61 篇。正文按学习曲线分为五个部分,每一部分解决一类问题。
如何使用本目录
这一页有三种用法,取决于你此刻的状态:
如果你刚拿到这本书,按顺序读「本书定位」「读者画像与前置知识」「学习路径」三节,用五分钟决定自己的入口章节。不要跳过这一步——Spring Boot 的资料遍地都是,但大部分是「片段式」的:讲一个注解、贴一段配置,然后让你自己去拼。这本书的价值在于顺序,选错入口比读得慢更浪费时间。
如果你已经读到一半,想查某一节在哪,直接看「分部分章节」里对应部分的表格。每一行都有一句话说明,可以帮你确认是不是你要找的那一节,避免点进去再退出来的反复。
如果你把这本书当手册用,主要会用到「前置与附录」和每一节末尾的小结。附录 A 到 D 分别覆盖注解、配置项、构建工具对照与常见问题排查,是查阅频率最高的四篇。
本书定位
这是一本面向 Java 开发者、但不假设你用过 Spring 的系统教材。它的目标不是让你「知道 Spring Boot 有哪些注解」,而是让你能够独立地用它搭出一个结构清晰、配置可控、能被测试和部署的服务。
它有三个刻意的取舍。
第一,重机制而非重清单。讲清楚「这个注解为什么存在、它背后触发了什么」,比罗列它能配哪些属性更重要。因为 Spring Boot 的注解和配置项加起来有上千个,背不下来,但机制只有那么几条。
第二,示例可运行、输出是真实的。书中代码都在 Spring Boot 4.1.1 + Java 21 上实跑过,日志、JSON 响应、报错信息都是真实结果,而不是伪代码或「大致长这样」。凡是 3.x 与 4.x 行为不同的地方,会两版分别标注。
第三,不回避 4.x 的破坏性变更。Spring Boot 4.0 做了一次大规模模块化重构,很多教程里的 starter 名、包名、测试注解在 4.x 里已经不适用。这本书以 4.1 为主线,会在需要的地方明确指出「这一段 3.x 不是这么写的」。
如果你需要的是一份「30 分钟跑通 Hello World」的速成教程,这本书的前两章就能满足你,剩下的可以留着以后读;如果你希望一次把 Spring Boot 的基础打牢、之后不必反复回炉,那它的节奏是合适的。
读者画像与前置知识
不同类型的读者,起点和建议路径差别很大。可以先在下面找到最接近自己的那一类。
会 Java 语法但没用过 Spring 的开发者:这是本书的目标读者。建议按顺序从第 1 章读到第 18 章,不要跳章。第 4 章的自动配置与第 5 章的依赖注入是全书的地基——不读懂这两章,后面每一章都会变成「照抄配置」。前置要求是:会写类与方法、知道 Maven 的 pom.xml 大概长什么样、能在命令行里运行程序。
用过 Spring Boot 2.x / 3.x、想升级到 4.x 的开发者:可以快速扫过第 1–3 章,把精力放在第 4 章(模块化重构)、第 7 章(Starter 命名变化)、第 17 章(测试注解变更)与第 15 章(Flyway 需要独立 starter)。请特别留意三处最容易踩坑的地方:spring-boot-starter-web 已改名为 spring-boot-starter-webmvc、@MockBean 已被 @MockitoBean 取代、@SpringBootTest 不再自带 MockMvc。如果你只想看迁移清单,可以直接跳到附录 A 与附录 B,或读高级卷的迁移章节。
有其他后端框架经验(Django / Rails / Express / .NET)的开发者:你对「框架帮你做了什么」这件事已经有直觉,可以直接从第 4 章切入,快速理解 Spring 的自动配置与它的差异。第 5、6 章讲容器与配置,是 Spring 与这些框架差别最大的地方,值得细读。
完全没写过 Java 的读者:这本书不适合作为第一本 Java 书。请先掌握 Java 语法(类、接口、泛型、注解、Lambda、Stream),再回来读它。第 3 章的示例会用到 record 与 var,那是 Java 17 之后的新语法。
学习路径
下表给出三条典型路径。三条路径不互斥,可以先速成再补齐。
| 路径 | 适合谁 | 读哪些 | 预计用时 |
|---|---|---|---|
| 完整通读 | 没用过 Spring / 想重建知识结构 | 第 1 章至第 18 章顺序读,每节动手跑代码 | 10–12 周(每天 1 小时) |
| 快速上手 | 有其他语言或框架经验、急于能干活 | 2.2、3.1、4.1、4.2、5.1、5.2、6.1、8.1、8.2、12.1、12.2 共 11 节 | 3 周 |
| 迁移参考 | 从 3.x 升级、只想看差异 | 1.2、1.3、4.2、7.1、15.1、17.2、17.3,再配附录 A、B | 1 周 |
两条补充建议:无论选哪条路径,都请完整跑通第 2 章的示例,把 JDK 与 Maven 环境配好——后面每一节都依赖它;如果时间允许,第 4 章关于自动配置的部分值得反复读,它是理解「为什么我什么都没配,Tomcat 就起来了」的钥匙。
一份可执行的十周计划
上面三条路径偏原则。如果你希望有一份可以直接照着打勾的安排,下面这份十周计划可以作为起点(按每天投入一小时估算),它对应的是「完整通读」路径。
| 周次 | 主要任务 | 完成标志 |
|---|---|---|
| 第 1 周 | 第 1–2 章:定位、版本选择与环境搭建 | 能独立建好 JDK 21 + Maven 环境并生成一个空项目 |
| 第 2 周 | 第 3 章:第一个应用与打包 | 能写出一个 REST 接口、打成 jar 并运行起来 |
| 第 3 周 | 第 4–5 章:自动配置与依赖注入 | 能解释启动日志里每一行在做什么 |
| 第 4 周 | 第 6–7 章:配置管理与 Starter | 能写一个自定义 Starter 并让它在宿主项目里生效 |
| 第 5 周 | 第 8 章:MVC 与 REST | 能按 REST 约定设计出一套完整的增删改查接口 |
| 第 6 周 | 第 9–11 章:校验、错误处理与拦截 | 能统一处理参数校验失败与业务异常 |
| 第 7 周 | 第 12–13 章:JPA 入门与查询 | 能定义实体、写派生查询并处理关联关系 |
| 第 8 周 | 第 14–15 章:事务与数据库版本管理 | 能正确划分事务边界,并用 Flyway 管理表结构变更 |
| 第 9 周 | 第 16–17 章:日志与测试 | 能给项目配上结构化日志与三层测试 |
| 第 10 周 | 第 18 章:综合实战 | 能独立完成一个可运行、可测试、可打包的完整服务 |
这份计划的关键不在于准时,而在于每周都有产出。Spring 的知识如果不落到能跑的代码上,遗忘速度会非常快——因为它的绝大部分内容是「配置」,而配置是查得到的,肌肉记忆却是练出来的。
三条路径之外的三条提醒
第一,不要跳过第 2 章。环境问题会伪装成框架问题:一个 JAVA_HOME 指错,报出来的错误可能看起来像「自动配置失效」。
第二,不要一次学完所有 starter。本书只会引入必要的依赖,每一个都说明「为什么需要它」。等你真正遇到某个场景(要做缓存、要发消息),再回来看对应的章节。
第三,遇到报错先看日志的最后 30 行。Spring Boot 的失败信息通常很完整,Caused by 链会一路指到根因。第 3 章与附录 D 有专门的排查方法。
五个部分之间的依赖关系
正文按学习曲线分为五个部分,它们之间是递进关系,不是并列关系:
| 部分 | 章节 | 回答什么问题 | 依赖谁 |
|---|---|---|---|
| 起步与环境 | 第 1–3 章 | 它是什么、怎么搭起来 | 无 |
| 核心机制 | 第 4–7 章 | 它为什么能自动工作 | 起步与环境 |
| Web 开发 | 第 8–11 章 | 怎么写对外的 HTTP 接口 | 核心机制 |
| 数据访问 | 第 12–15 章 | 怎么把数据持久化 | 核心机制 |
| 工程化与交付 | 第 16–18 章 | 怎么让它可观测、可测试、可交付 | 前四部分全部 |
核心机制是全书的地基。第 4 到第 7 章讲的自动配置、依赖注入、配置管理、Starter 机制,会在后面每一个部分里反复出现。如果你时间非常有限,优先读这一部分。
Web 开发与数据访问可以交换顺序。两部分都只依赖核心机制,彼此之间没有强依赖。如果你手头的任务偏接口开发,可以先读第三部分;如果偏数据处理,可以先读第四部分。
工程化与交付必须最后读。第 17 章的测试会用到前面所有章节的示例代码,第 18 章的综合实战会把这 18 章的内容串成一个项目。
分部分章节
下面按部分列出全部 54 节。每一行都有一句话说明,用来帮你确认这是不是你要找的那一节。
第一部分:起步与环境(第 1–3 章)
这一部分解决「是什么、怎么装、怎么写」三个前置问题,读完能独立跑起一个 Spring Boot 应用。
节奏上,这一部分刻意放慢了。第 1 章讲定位与版本选择,看起来与写代码无关,但它决定了你后面看的每一份资料是否适用于你手上的版本——这是 2026 年读 Spring Boot 最容易踩的坑。第 2 章的环境配置建议一次做对,后面每一节的示例都依赖它。第 3 章把「写接口 → 启动 → 打包」跑通一遍,让你对全流程有整体印象。
| 编号 | 章节 | 说明 |
|---|---|---|
| 1.1 | 定位、生态与它解决的问题 | 从传统 Spring 的 XML 配置痛点讲起,说清 Spring Boot 的三条核心主张与它没解决的问题 |
| 1.2 | Spring Boot 4 带来了什么 | 模块化重构、Starter 改名、Jackson 3、Jakarta EE 11,以及 4.x 现在适合谁用 |
| 1.3 | 版本线的选择 | 3.5.x 与 4.1.x 的逐项对照与决策树,附本机双线实测数据 |
| 2.1 | JDK 与 Maven 环境准备 | 装好 Java 21 与 Maven 3.9,配好 JAVA_HOME 与镜像加速 |
| 2.2 | 用 start.spring.io 生成项目 | 逐字段说明生成器怎么填,并逐段解读生成出来的 pom.xml |
| 2.3 | 目录结构与启动类 | 标准 Maven 目录树、启动类逐行解释,以及包扫描规则这个高频坑 |
| 3.1 | 写第一个 REST 接口 | 用 @RestController 写出第一个接口,理解返回对象如何变成 JSON |
| 3.2 | 内嵌服务器与启动流程 | 逐行解读真实启动日志,理解 SpringApplication.run() 做了什么 |
| 3.3 | 打包成可执行 jar | 看懂可执行 jar 的内部结构与 4.x 移除的打包特性 |
第二部分:核心机制(第 4–7 章)
这一部分是全书的核心。它解释 Spring Boot 内部「东西是怎么被装配起来的」:自动配置怎么生效、Bean 从哪来、配置从哪读、Starter 由什么组成。是从「会用」迈向「懂原理」的分水岭。
这四章的知识会在后面每一个部分里反复出现,值得慢读。
| 编号 | 章节 | 说明 |
|---|---|---|
| 4.1 | @SpringBootApplication 拆解 | 一个注解背后的三合一,以及它们各自负责什么 |
| 4.2 | 自动配置如何生效 | 从 @EnableAutoConfiguration 到 imports 文件,并用 --debug 报告验证 |
| 4.3 | 条件装配与开关 | @Conditional 家族逐个讲透,理解「默认配置为什么能被覆盖」 |
| 5.1 | 容器与 Bean | IoC 反转了什么,以及把一个类变成 Bean 的四种方式 |
| 5.2 | 注入方式与作用域 | 三种注入方式的取舍、五种作用域,以及 prototype 的经典陷阱 |
| 5.3 | 生命周期与初始化回调 | Bean 从实例化到销毁的完整流程,以及三种初始化回调的顺序 |
| 6.1 | application.yml 与 Profile | YAML 语法坑、多环境配置文件的组织方式与激活顺序 |
| 6.2 | @ConfigurationProperties 类型安全配置 | 为什么它比 @Value 好,松散绑定、构造器绑定与配置校验 |
| 6.3 | 外部化配置与优先级 | 完整的配置源优先级表,以及环境变量命名转换规则 |
| 7.1 | Starter 的组成 | 拆开 spring-boot-starter-webmvc,看清 starter 的两段式结构 |
| 7.2 | 写一个自定义 Starter | 从零写出可用的 starter,含完整 pom、代码与验证过程 |
| 7.3 | 自动配置的调试与排查 | 读懂 --debug 报告,从 Negative matches 反推 Bean 为什么没生效 |
第三部分:Web 开发(第 8–11 章)
这一部分把 Spring Boot 当 Web 框架用:设计接口、校验入参、处理错误、拦截请求。
| 编号 | 章节 | 说明 |
|---|---|---|
| 8.1 | 控制器与路由映射 | 各类映射注解的用法、路径拼接规则,以及 4.x 新增的 API Versioning |
| 8.2 | 请求参数与响应体 | 六种取参方式全解,以及返回类型该怎么选 |
| 8.3 | RESTful 设计约定 | 资源命名、状态码搭配、幂等性,以及分页排序的查询参数约定 |
| 9.1 | Bean Validation 常用注解 | @NotNull 与 @NotBlank 到底差在哪,以及校验失败时响应体长什么样 |
| 9.2 | 自定义校验器 | 写一个 ISBN 格式校验注解,并配好国际化消息 |
| 9.3 | 分组校验与嵌套校验 | 同一个 DTO 在新增与修改时用不同规则,以及级联校验的坑 |
| 10.1 | @ExceptionHandler | 在控制器内部处理异常,理解它的作用范围与局限 |
| 10.2 | @ControllerAdvice 全局处理 | 把异常处理集中起来,覆盖框架抛出的内置异常 |
| 10.3 | 统一响应结构 | 设计一个前后端都舒服的响应包装体,并讨论它的代价 |
| 11.1 | 静态资源映射 | static/ 目录的默认规则、缓存控制与自定义映射 |
| 11.2 | CORS 跨域 | 浏览器为什么拦你、预检请求是什么,以及三种配置方式 |
| 11.3 | 拦截器与过滤器 | 两者的执行时机与适用场景,以及一个登录校验的完整实现 |
第四部分:数据访问(第 12–15 章)
这一部分解决「数据存到哪、怎么取出来、怎么保证一致性」。
| 编号 | 章节 | 说明 |
|---|---|---|
| 12.1 | 数据源与连接配置 | 配置 HikariCP 数据源,理解连接池的基本参数 |
| 12.2 | 实体与 Repository | 用 JPA 定义实体,以及 Repository 接口的四种形态 |
| 12.3 | 派生查询方法 | 靠方法名生成查询的规则、边界与常见误用 |
| 13.1 | 关联映射 | 一对一、一对多、多对多的映射方式与级联策略 |
| 13.2 | JPQL 与原生 SQL | 用 @Query 写复杂查询,以及两者各自的适用场景 |
| 13.3 | 分页与排序 | Pageable 的用法、分页查询的执行过程与性能注意点 |
| 14.1 | @Transactional 基本用法 | 声明式事务怎么起作用,以及最基础的用法 |
| 14.2 | 传播行为与隔离级别 | 七种传播行为的语义与选择依据 |
| 14.3 | 事务失效的常见场景 | 自调用、异常被吞、非 public 方法——失效的原因与规避方式 |
| 15.1 | Flyway 入门 | 用版本化脚本管理表结构,以及 4.x 需要独立 starter 这件事 |
| 15.2 | 版本化迁移脚本 | 脚本命名规范、可重复迁移与回滚策略 |
| 15.3 | 多环境数据管理 | 开发、测试、生产三套数据初始化与迁移的组织方式 |
第五部分:工程化与交付(第 16–18 章)
这一部分把前面所有内容收拢成一个可以交付的服务。
| 编号 | 章节 | 说明 |
|---|---|---|
| 16.1 | 日志配置与级别 | 日志级别、输出格式与文件轮转的配置方式 |
| 16.2 | 结构化日志 | 输出 JSON 日志以便采集,以及 MDC 的使用 |
| 16.3 | 日志实践要点 | 该记什么、不该记什么,以及日志级别怎么选 |
| 17.1 | 单元测试 | 用 JUnit 5 与 Mockito 测试 Service 层 |
| 17.2 | 切片测试 | @WebMvcTest 与 @DataJpaTest,以及 4.x 必须补的注解 |
| 17.3 | 集成测试 | 用 @SpringBootTest 做端到端测试,理解它为什么慢 |
| 18.1 | 需求与设计 | 把前面 17 章的知识用在一个完整项目的设计上 |
| 18.2 | 实现 | 逐层实现这个项目,把散落的知识点串起来 |
| 18.3 | 打包与运行 | 完成构建、运行与验证,并说明下一步该学什么 |
前置与附录
除了 54 节正文,本书还有 3 篇前置内容与 4 个附录。
序、前言与目录
| 篇目 | 说明 |
|---|---|
| 序:为什么还要写一套 Spring Boot 教程 | 说明这套书与站内既有 Java 专题的分工,以及它想解决什么问题 |
| 前言:这套书怎么读 | 版本口径、示例约定、代码获取方式与阅读建议 |
| 目录(本页) | 你现在看的这一页 |
附录 A–D
| 篇目 | 说明 |
|---|---|
| 附录 A:常用注解速查 | 按用途分类的注解清单,含 3.x 到 4.x 的改名对照 |
| 附录 B:配置项速查 | 高频配置项与它们的默认值、常见取值 |
| 附录 C:Maven 与 Gradle 对照 | 同一份依赖与插件在两种构建工具下的写法对照 |
| 附录 D:常见问题排查 | 按症状索引的排查手册,覆盖启动、配置、数据库与测试四类问题 |
常见问题速查
下面这些问题是初学者最常问的,先在这里给出简短回答,详细展开在对应章节。
| 问题 | 简短回答 | 详见 |
|---|---|---|
| 我该选 3.5 还是 4.1? | 新项目选 4.1;存量系统先评估依赖兼容性再决定 | 1.3 |
| 为什么启动日志里的包名和我看的老教程不一样? | 4.0 做了模块化重构,包名从 o.s.b.w.embedded.tomcat 变成 o.s.boot.tomcat | 1.2、3.2 |
spring-boot-starter-web 还能用吗? | 能用但已废弃,新代码请用 spring-boot-starter-webmvc | 1.2、7.1 |
| 为什么我的 Bean 没被注入? | 大概率是包扫描范围问题,或该类没被标注为组件 | 2.3、5.1 |
| 改了配置为什么没生效? | 配置源有优先级,命令行参数会覆盖配置文件 | 6.3 |
为什么 @Transactional 没起作用? | 常见原因是同类内部自调用,绕过了代理 | 14.3 |
测试里为什么 @MockBean 报错? | 4.x 已移除,改用 @MockitoBean | 17.2 |
为什么 @SpringBootTest 里注入不了 MockMvc? | 4.x 需要额外加 @AutoConfigureMockMvc | 17.2、17.3 |
读完本书之后
这本书覆盖的是 Spring Boot 的基础与主干。读完之后,下面这些方向可以作为下一步:
如果要做生产级服务,读实战卷。它讲多模块工程、测试体系、缓存、安全、异步消息、容器化与可观测性——这些内容不适合放在入门书里,因为每一块都需要真实的场景才讲得清。
如果想理解内部机制,读高级卷。它讲 Spring Framework 7 的容器启动流程、AOP 代理、Web 请求管线、WebFlux、JPA 持久化上下文、GraalVM 原生镜像,以及 3.x 到 4.x 的完整迁移路径。
如果需要查阅专题级深度,站内的 Java 专题 与 Java 企业级开发专题 覆盖了 Spring Cloud 微服务、JVM 调优、分布式事务、安全合规等方向。它们与本书是互补关系:本书是「按顺序走一遍」,专题是「按主题深挖」。
小结
这一页给出了全书的地图:61 篇的组织方式、三类读者的入口、三条阅读路径与一份十周计划、五个部分之间的依赖关系,以及 54 节的逐节索引。
如果你现在还不确定从哪开始,最稳妥的做法是:从第 1 章第 1 节开始,按顺序读。这本书的顺序是设计过的——每一节都假设你读过前面那些节。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。