系列说明:本系列共 30 篇,分 7 大阶段,由浅入深拆解 Spring / Spring Boot 核心源码。本篇是索引帖,后续每篇发布后会在「目录」处回填链接。

一、为什么写这个系列

很多 Java 开发者用 Spring 写业务很顺手,可一旦被问到「Bean 是怎么创建出来的」「循环依赖到底怎么解决的」「@Transactional 为什么有时候不生效」,就容易卡壳。

我做过几年 CRUD,也面试过别人。一个很真实的观察是:能把 Spring 用明白的人很多,能把 Spring 讲明白的人很少

市面上的资料要么停留在「是什么」,要么一上来就甩大段源码让人劝退。本系列不堆概念,只做一件事——带着你一行行把 Spring 跑起来、断进去、读出来。光背八股没用,源码才是底气。

二、这个系列能帮你解决什么

  • 面试:20+ 道高频 Spring 源码题,能说清「为什么」而不是背「是什么」。
  • 排错:遇到循环依赖、事务不回滚、AOP 不生效,能从原理层定位根因。
  • 视野:理解一个工业级框架如何设计扩展性(BeanPostProcessor、条件注解、ImportSelector 等),这些思想能反哺你自己的代码。

三、适合谁看

  • 有 1~3 年 Java 经验,日常在用 Spring / Spring Boot;
  • 想深入原理、备战中高级岗位面试;
  • 至少写过 Spring Bean、用过 @Autowired@Transactional

不要求你提前读过大段源码,但建议你本地能跑起一个 Spring Boot 工程。

四、版本与环境说明

为了避免「你看到的代码和我写的对不上」,全系列统一基线:

  • Spring Framework 5.3.x
  • Spring Boot 2.7.x
  • JDK 8+
  • 构建工具:Gradle(Spring 官方源码仓库即用 Gradle)
  • IDE:IntelliJ IDEA

如果你用的是 Boot 3 / JDK 17,核心流程一致,仅少数类名与配置文件有调整(如自动配置从 spring.factories 迁移到 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports),涉及处我会单独点出差异。

五、学习路径总览(7 大阶段,共 30 篇)

阶段一 · 准备篇(3 篇)

  • 开篇与学习路径总览(本篇)
  • 手把手搭建 Spring 源码调试环境
  • Spring 整体架构与核心模块

阶段二 · IoC 容器核心(7 篇)

  • BeanFactory 与 ApplicationContext 的区别
  • refresh():容器启动的 12 个步骤
  • 从 getBean 到 doCreateBean 的 Bean 诞生全链路
  • Bean 生命周期:实例化 → 属性填充 → 初始化 → 销毁
  • 依赖注入(DI)源码解析
  • 循环依赖:为什么用三级缓存而不是二级
  • FactoryBean 与 Spring 事件机制

阶段三 · AOP(4 篇)

  • AOP 核心概念回顾
  • @EnableAspectJAutoProxy 做了什么
  • 代理对象何时创建
  • JDK 动态代理 vs CGLIB 与拦截器责任链

阶段四 · Spring MVC(5 篇)

  • DispatcherServlet 初始化与九大组件
  • doDispatch 请求处理全流程
  • HandlerMapping 与 HandlerAdapter
  • 参数解析器与返回值处理
  • 拦截器与异常处理

阶段五 · Spring Boot(5 篇)

  • @SpringBootApplication 三注解拆解
  • 自动配置原理
  • 条件注解 @Conditional
  • SpringApplication.run() 启动流程
  • starter 机制与自定义 starter

阶段六 · 声明式事务(3 篇)

  • @EnableTransactionManagement 与 TransactionInterceptor
  • 事务传播行为源码
  • @Transactional 7 大失效场景

阶段七 · 进阶与实战(3 篇)

  • Spring 核心扩展点全景
  • 20 道高频面试题源码级解析
  • 手写 Mini-Spring:最简 IoC + DI

六、我推荐的学习心法

  1. 带着问题读:每篇开头的问题,先自己猜答案,再去看源码验证。
  2. 一定要动手 debug:光看不动,三天就忘;能断点的环境是前提。
  3. 画时序图:把一个调用链画成图,理解会深一层。
  4. 做你自己的笔记:把每篇的「总结」改写成你自己的话,才算真懂。

七、目录(持续回填)

本篇是索引帖。上面每篇正式发布后,我会把链接补进对应的 [ ] 处,方便你按阶段回看、也方便新读者顺着链路追更。

八、下篇预告

下一篇:《手把手搭建 Spring 源码调试环境》——没有能断点的环境,后面全白搭。我们会聊怎么把 spring-framework 源码拉下来、在 IDEA 里跑通、并写一个最小测试类,为后面所有源码追踪打底。


如果这篇对你有帮助,欢迎收藏 + 关注,跟着系列一起把 Spring 啃透。下篇见。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐