《Spring Boot 高级》全 34 篇,是一套面向「已经能独立交付服务、想理解框架内部机制」的工程师的进阶书:从容器内部讲到交付运行与版本迁移,示例基于 Spring Boot 4.1.1 + Java 21 实跑,关键结论均以实际 jar 与源码核实。
本页是《Spring Boot 高级》的全书目录:按章节顺序列出全部 34 篇,点击标题直达正文。也可以从各节末尾的「阅读导航」按顺序通读,或先看目录篇 里的三条学习路径与八周计划。
全书概览
| 项目 | 内容 |
|---|---|
| 书稿 | 《Spring Boot 高级》 |
| 篇数 | 34 篇(正文 11 章 33 节 + 目录篇) |
| 领域 | 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),差异处单独标注 |
| 上级专题 | 书稿专题 |
全书目录
前置:目录
| 节 | 文章 | 核心内容 |
|---|---|---|
| — | 目录与学习路径 | 全书导航页:读者定位、三条学习路径与八周计划、四个部分的依赖关系与 33 节逐节索引 |
第一部分:容器内部机制(第 1–3 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 1.1 | 1.1 ApplicationContext 启动流程 | 从 SpringApplication.run() 追到容器可用,拆开 refresh() 的步骤与两类后处理器的介入时机 |
| 1.2 | 1.2 Bean 定义注册与合并 | BeanDefinition 的结构、组件扫描如何产出定义、父子定义合并与同名冲突的处理 |
| 1.3 | 1.3 依赖解析与循环依赖 | getBean() 的解析流程、三级缓存为何能解 setter 循环依赖、构造器注入为何必然失败 |
| 2.1 | 2.1 自动配置类的加载顺序 | imports 清单的实际规模、@AutoConfiguration 的语义与排序规则、字典序兜底的意义 |
| 2.2 | 2.2 @Conditional 家族实现 | 条件在哪个阶段被评估、OnClassCondition 等实现如何工作、评估结果如何进 --debug 报告 |
| 2.3 | 2.3 自动配置的覆盖与排除 | 自动配置如何为用户定义「让路」、两种排除方式的差别、覆盖自动配置 Bean 的风险 |
| 3.1 | 3.1 JDK 动态代理与 CGLIB | 两种代理的选择规则、proxyTargetClass 如何改变结果、CGLIB 内联进 spring-core 的影响 |
| 3.2 | 3.2 切面织入与顺序 | @Aspect 如何变成 Advisor、多个 advice 如何串成调用链、@Order 与同切面内次序 |
| 3.3 | 3.3 代理失效的边界 | 自调用与 private / final / static 为何绕过代理、AopContext.currentProxy() 与自注入的代价 |
第二部分:Web 请求处理(第 4–5 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 4.1 | 4.1 DispatcherServlet 处理链 | 逐段拆开 doDispatch()、HandlerMapping 如何找到 handler、HandlerAdapter 为何存在 |
| 4.2 | 4.2 参数解析与消息转换 | 参数解析器的默认顺序、@RequestBody 如何按 Content-Type 选中转换器、自定义注册位置 |
| 4.3 | 4.3 过滤器、拦截器与异常解析 | Filter 与 Interceptor 的时机差异、异常解析链的固定顺序、@ResponseStatus 在哪一环生效 |
| 5.1 | 5.1 响应式类型与背压 | Mono / Flux 的语义与惰性、request(n) 协议如何构成背压、各类背压策略的适用场景 |
| 5.2 | 5.2 WebFlux 请求处理 | WebFlux 与 MVC 是两条独立栈、DispatcherHandler 与 WebFilter 的职责、两种端点风格取舍 |
| 5.3 | 5.3 阻塞代码的隔离 | 事件循环上跑阻塞代码会发生什么、publishOn 与 subscribeOn 的差别、用 BlockHound 抓问题 |
第三部分:数据、事务与安全(第 6–8 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 6.1 | 6.1 EntityManager 与持久化上下文 | 注入的 EntityManager 为何是代理、实体四种状态如何转换、持久化上下文何时创建与销毁 |
| 6.2 | 6.2 事务与 Flush 时机 | Hibernate 在哪些时刻 flush、FlushMode 各取值的含义、readOnly 在 ORM 层实际改了什么 |
| 6.3 | 6.3 连接获取与延迟加载 | 连接何时被占用与归还、LazyConnectionDataSourceProxy 的意义、open-in-view 的代价 |
| 7.1 | 7.1 事务同步与事件 | TransactionSynchronizationManager 的机制、@TransactionalEventListener 四个 phase、提交后发消息 |
| 7.2 | 7.2 虚拟线程下的 Spring | 开启虚拟线程后替换了哪些组件、pinning 在哪个 JDK 版本被修掉、它适合什么任务 |
| 7.3 | 7.3 并发编程与线程池模型 | ThreadPoolTaskExecutor 的队列策略、@Async 默认执行器为何危险、上下文如何跨线程传递 |
| 8.1 | 8.1 过滤器链构建过程 | springSecurityFilterChain 如何被创建并注册、HttpSecurity 的 DSL 装配出什么、多链如何匹配 |
| 8.2 | 8.2 认证与授权流程 | ProviderManager 与认证提供者的协作、SecurityContext 的存储策略、授权决策链怎么走 |
| 8.3 | 8.3 方法安全与上下文传播 | @EnableMethodSecurity 背后仍是 AOP、表达式求值拿到哪些上下文、安全上下文如何跨线程传播 |
第四部分:构建、可观测与迁移(第 9–11 章)
| 节 | 文章 | 核心内容 |
|---|---|---|
| 9.1 | 9.1 AOT 处理与生成物 | AOT 处理在构建期做了什么、生成物有哪些、扩展点是什么、AOT 模式下为何能少走反射 |
| 9.2 | 9.2 反射与资源配置 | 反射与动态代理在原生镜像下为何失败、RuntimeHints 如何声明元数据、如何排查配置缺失 |
| 9.3 | 9.3 原生镜像的构建与权衡 | 原生镜像换来什么、付出什么代价、哪类服务适合上、它与 CDS 等手段的关系 |
| 10.1 | 10.1 Micrometer 指标模型 | 四种计量器的语义差异、Observation 如何统一指标与追踪、MeterFilter 能做什么、P99 怎么算 |
| 10.2 | 10.2 分布式追踪实现 | 追踪门面为何这样设计、桥接实现的取舍、采样策略如何组合、传播格式的差别 |
| 10.3 | 10.3 生产问题诊断手段 | JFR 记录什么、jcmd 与线程转储怎么用、堆转储怎么获取与分析、在线诊断工具的风险 |
| 11.1 | 11.1 Spring Boot 4 的模块化重构 | 大模块被拆成了什么、starter 改名对照、对依赖声明与 import 语句的实际影响 |
| 11.2 | 11.2 依赖与配置迁移清单 | 按依赖关系排好序的迁移步骤:坐标与版本、类与注解改名、配置属性重命名与逐步验证 |
| 11.3 | 11.3 迁移实测与回滚策略 | 如何分批验证、哪些改动不可回滚、怎么用特性开关降低风险、什么情况下不该迁 |
怎么用这份索引
- 顺序通读:从第 1 章 1.1 开始,每一节末尾都有上一节 / 下一节的导航。若不确定从哪开始,先看目录篇的学习路径 。
- 按现象跳读:注解不生效看 3.3、循环依赖报错看 1.3、线程池被撑爆看 7.3、连接被提前占用看 6.3、过滤器顺序不对看 8.1、自定义自动配置没生效看 2.3。目录篇末尾另有一张按排查场景索引的速查表。
- 迁移前速查:准备 3.x → 4.x 时,先读 11.1 与 11.2 弄清模块拆分与迁移清单,再回头补 1.1、2.1 的容器与自动配置机制。
相关阅读
- Java 专题 — Spring Boot、Spring Cloud、JVM 与高并发的专题级深度文章
- Java 企业级开发专题 — 企业级工程实践与治理
- 架构专题 — 架构风格、演进与权衡
- 可观测性专题 — 指标、日志、链路追踪的系统方法,与本卷第 10 章衔接
- DevOps 专题 与 Kubernetes 专题 — 与本卷第 9 章衔接
- 书稿专题 — 全部在线电子书与创作手记