《Spring Boot 实战》全 55 篇,是一套面向「已会用 Spring Boot、但没独立交付过生产服务」的工程师的实战书:从工程基建讲到能把服务交付上线,示例围绕同一个「图书借阅服务」演进,基于 Spring Boot 4.1.1 + Java 21 实跑。
本页是《Spring Boot 实战》的全书目录:按章节顺序列出全部 55 篇,点击标题直达正文。也可以从各节末尾的「阅读导航」按顺序通读,或先看目录篇 里的三条学习路径与十周计划。
全书概览
| 项目 | 内容 |
|---|---|
| 书稿 | 《Spring Boot 实战》 |
| 篇数 | 55 篇(正文 18 章 54 节 + 目录篇) |
| 领域 | Spring Boot 4.x 生产级工程实践与服务交付 |
| 阅读方式 | 从目录篇 进入按顺序通读,或按痛点跳读 |
| 实测版本 | Spring Boot 4.1.1(Spring Framework 7.0.9)+ Java 21.0.12.1 + Maven 3.9.12 |
| 对照版本 | Spring Boot 3.5.16(Spring Framework 6.2.19),差异处单独标注 |
| 上级专题 | 书稿专题 |
全书目录
前置:目录
| 节 | 文章 | 核心内容 |
|---|---|---|
| — | 目录与学习路径 | 全书导航页:读者定位、三条学习路径与十周计划、四个部分的依赖关系与 54 节逐节索引 |
第一部分:工程基建(第 1–4 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 1.1 | 1.1 何时该拆模块 | 给出「单体还是多模块」的可操作判据,以及三种拆分粒度各自要付的代价 |
| 1.2 | 1.2 父子 POM 与依赖管理 | 分清 parent 继承与 dependencyManagement 的职责,写出能构建的三模块骨架 |
| 1.3 | 1.3 分层与包结构约定 | 按功能与按层分包的取舍,并用 ArchUnit 把「禁止循环依赖」变成会失败的测试 |
| 2.1 | 2.1 依赖冲突排查 | 把「运行时才炸」的冲突还原成依赖树路径,给出三种修复各自的适用边界 |
| 2.2 | 2.2 版本对齐与 BOM | 分清 starter-parent 与 spring-boot-dependencies,用 import scope 的 BOM 收拢版本 |
| 2.3 | 2.3 构建加速与缓存 | 先量出构建慢在哪一段,再用六类手段压时间,并说清 4.1 -DskipTests 的语义变化 |
| 3.1 | 3.1 多环境配置策略 | 把「环境」拆成正交维度,用 profile group 组合激活策略,划清三层配置的职责 |
| 3.2 | 3.2 敏感信息与密钥管理 | 看清口令从哪几处漏出,划清配置加密与外部密钥管理的边界与密钥轮换影响 |
| 3.3 | 3.3 配置中心接入 | 判断什么规模才值得上配置中心,给出动态刷新「哪些能刷、哪些刷不动」的边界 |
| 4.1 | 4.1 测试分层策略 | 把四层测试的成本与收益摊开算账,给出可落地的配比与 CI 分层命令 |
| 4.2 | 4.2 Testcontainers 真实依赖 | 说清内嵌数据库会掩盖什么,给出 Testcontainers 2.0 的坐标与共享容器策略 |
| 4.3 | 4.3 契约测试与数据隔离 | 划清契约测试与集成测试的边界,把数据隔离三策略的代价讲透 |
第二部分:Web 后端工程(第 5–10 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 5.1 | 5.1 资源建模与路由 | 把动作式接口重写成资源式接口,定下 URL 层级、方法与状态码语义 |
| 5.2 | 5.2 分页、过滤与排序 | Page 与 Slice 的取舍、count 查询的代价、keyset 分页与排序字段白名单 |
| 5.3 | 5.3 幂等与并发控制 | 让写接口在超时重试、重复点击、并发提交下不产生重复数据 |
| 6.1 | 6.1 Repository 分层与 DTO 转换 | 说清实体为什么不能直接进接口层,给出投影选型与转换代码该放哪一层 |
| 6.2 | 6.2 复杂查询的三种写法 | 讲清派生查询的失效边界、@Query 的 JPQL/native 取舍与 Querydsl 的动态条件 |
| 6.3 | 6.3 N+1 与抓取策略 | 看懂 N+1 在 SQL 日志里的形态,给出三种抓取策略的适用与代价 |
| 7.1 | 7.1 OpenAPI 与 SpringDoc | 把接口变成机器可读的 OpenAPI 文档,讲清注解与推断的边界、生产该不该开 |
| 7.2 | 7.2 契约先行与代码生成 | 把 OpenAPI 从「代码的产物」变成「代码的输入」,并在 CI 里固定契约校验 |
| 7.3 | 7.3 版本演进与兼容性 | 何时才该引入版本、三种版本载体怎么选、4.x 内置 API Versioning 怎么配 |
| 8.1 | 8.1 Spring Cache 抽象 | 把缓存声明式地加到服务上,讲清注解抽象能表达什么、不能表达什么 |
| 8.2 | 8.2 Redis 缓存实践 | 序列化、连接方式与键命名,以及大 key 与热 key 两类线上事故的成因与对策 |
| 8.3 | 8.3 缓存一致性 | 读写顺序怎么定、延迟双删与 binlog 订阅换来什么、三种缓存故障怎么防 |
| 9.1 | 9.1 Spring Security 配置模型 | 为什么是 SecurityFilterChain bean、过滤器链顺序、401 与 403 各由谁负责 |
| 9.2 | 9.2 JWT 无状态认证 | 判断该不该上无状态 JWT、选对签名算法,并正确处理刷新、轮换与 kid |
| 9.3 | 9.3 方法级授权与多租户 | 把授权从 URL 层下沉到方法层,设计多分馆租户隔离与上下文传播 |
| 10.1 | 10.1 @Async 与线程池 | @Async 的代理前提、默认执行器为什么危险、自定义线程池与上下文传递 |
| 10.2 | 10.2 消息队列集成 | Spring Kafka 生产端与消费端配置、位点提交模式,并对照 RabbitMQ 说清选型 |
| 10.3 | 10.3 可靠投递与幂等消费 | 生产端怎么保证不丢、消费端怎么在重复投递下不出错、失败的消息去哪 |
第三部分:数据与集成(第 11–14 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 11.1 | 11.1 HikariCP 调优 | maximum-pool-size 的推导方法、连接泄漏排查,区分「池不够」与「SQL 慢」 |
| 11.2 | 11.2 读写分离 | AbstractRoutingDataSource 的路由实现,理解事务内切换数据源为何无效 |
| 11.3 | 11.3 分库分表的接入边界 | 建立「什么时候才该分库分表」的判断力,掌握分片键与跨片查询的边界 |
| 12.1 | 12.1 事务边界设计 | @Transactional 该落在哪一层、自调用为何失效、事务里哪些事绝对不能做 |
| 12.2 | 12.2 乐观锁与悲观锁 | 乐观锁的失败与重试、悲观锁的写法与代价、加锁顺序对死锁的影响 |
| 12.3 | 12.3 分布式事务的取舍 | 分清 2PC/TCC/Saga/本地消息表各自的边界,并落地本地消息表加轮询补偿 |
| 13.1 | 13.1 调度方案选型 | 吃透 @Scheduled 的真实语义与坑,再决定要不要上 Quartz 或调度中心 |
| 13.2 | 13.2 Spring Batch 实战 | Job/Step/chunk 模型、chunk 与事务边界的关系,以及 6.0 的包结构重组 |
| 13.3 | 13.3 分布式调度与幂等 | 解决 @Scheduled 在多实例下的重复执行问题,让任务「重复跑也安全」 |
| 14.1 | 14.1 上传下载与大文件 | multipart 与容器限制、延迟解析、流式读写、文件名安全与下载响应头 |
| 14.2 | 14.2 对象存储集成 | 用 S3Client 上传下载、用 S3Presigner 签发直传 URL,把对象键设计好 |
| 14.3 | 14.3 断点续传与直传 | 用分片上传实现断点续传、用预签名 URL 让客户端绕过应用服务器 |
第四部分:交付与运行(第 15–18 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 15.1 | 15.1 镜像构建与分层 | 分层顺序、jarmode=tools 提取、基础镜像与非 root 运行的取舍 |
| 15.2 | 15.2 Kubernetes 部署要点 | 资源与 JVM 内存、三种探针、配置注入、无状态与滚动更新这几组易错字段 |
| 15.3 | 15.3 健康检查与优雅停机 | 健康端点分组、可用性状态机与容器停机时序串成一条完整链路 |
| 16.1 | 16.1 Actuator 与指标 | 端点暴露与鉴权策略、Micrometer 的指标模型,并让 Prometheus 真正算出 P99 |
| 16.2 | 16.2 链路追踪 | 从入口到数据库、下游 HTTP、消息队列的完整调用链,采样率与传播格式的取舍 |
| 16.3 | 16.3 日志聚合与告警 | 把日志变成可查询的结构化字段,建立「指标决定要不要叫人、日志回答为什么」的心智模型 |
| 17.1 | 17.1 性能剖析方法 | 建立「先测量再优化」的工作流,用 JFR、async-profiler 把瓶颈钉到具体代码行 |
| 17.2 | 17.2 压测与容量评估 | 设计贴近真实的场景与数据、分离压测机与被测机,用实测 QPS 倒推实例数 |
| 17.3 | 17.3 JVM 参数与运行时调优 | 堆大小与容器感知、OOM 现场、G1 取舍与何时上 ZGC,统一 GC 日志 |
| 18.1 | 18.1 需求与架构 | 把功能与非功能需求翻译成一组可评审的架构决策记录,附容量预算 |
| 18.2 | 18.2 实现与联调 | 分层骨架、跨模块契约、并发与异步的关键写法,以及可复现的联调流程 |
| 18.3 | 18.3 上线、观测与回滚 | 上线检查清单、灰度与分批发布、基于 SLO 的告警阈值与四类回滚的取舍 |
怎么用这份索引
- 顺序通读:从第 1 章 1.1 开始,每一节末尾都有上一节 / 下一节的导航。若不确定从哪开始,先看目录篇的学习路径 。
- 按痛点跳读:连接池看 11.1、缓存一致性看 8.3、事务不回滚看 12.1、定时任务重复执行看 13.3。目录篇末尾另有一张按生产症状索引的速查表。
- 交付前速查:测试分层(4.1)、镜像与部署(15.1–15.3)、观测与告警(16.1–16.3)、压测与容量(17.2)、上线与回滚(18.3)适合服务即将上线时集中过一遍。
相关阅读
- Java 专题 — Spring Boot、Spring Cloud、JVM 与高并发的专题级深度文章
- Java 企业级开发专题 — 企业级工程实践与治理
- 架构专题 — 架构风格、演进与权衡,配合第 18 章的架构决策一起看
- DevOps 专题 与 Kubernetes 专题 — 与本卷第 15 章衔接
- 可观测性专题 — 指标、日志、链路追踪的系统方法,与本卷第 16 章衔接
- 书稿专题 — 全部在线电子书与创作手记