Spring 源码系列(1): 为什么我要读源码,以及该怎么跟着啃
系列说明:本系列共 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
六、我推荐的学习心法
- 带着问题读:每篇开头的问题,先自己猜答案,再去看源码验证。
- 一定要动手 debug:光看不动,三天就忘;能断点的环境是前提。
- 画时序图:把一个调用链画成图,理解会深一层。
- 做你自己的笔记:把每篇的「总结」改写成你自己的话,才算真懂。
七、目录(持续回填)
本篇是索引帖。上面每篇正式发布后,我会把链接补进对应的 [ ] 处,方便你按阶段回看、也方便新读者顺着链路追更。
八、下篇预告
下一篇:《手把手搭建 Spring 源码调试环境》——没有能断点的环境,后面全白搭。我们会聊怎么把 spring-framework 源码拉下来、在 IDEA 里跑通、并写一个最小测试类,为后面所有源码追踪打底。
如果这篇对你有帮助,欢迎收藏 + 关注,跟着系列一起把 Spring 啃透。下篇见。
更多推荐




所有评论(0)