缺什么补什么:别在 Spring 外围打转了

很多做 Java 开发的人,简历上都写着“熟练使用 Spring”,但真到排查问题或者面试被追问时,往往卡在 Bean 的生命周期、三级缓存、事务失效边界这些底层细节上。日常写 Controller 和 Service 没问题,可一旦遇到 Bean 循环依赖报错、AOP 代理失效、配置加载顺序异常,就只会重启试错。这门课就是用来补这块能力缺口的。它不教你怎么写增删改查,而是直接把 Spring5 的源码拆开,讲容器初始化、Bean 创建、依赖注入和切面织入的真实执行链路。适合已经写过一段时间 Spring 业务代码、能独立搭项目,但想搞懂框架内部运行机制的人。如果你连 ApplicationContext 和 BeanFactory 的区别都说不清,建议先补基础再来看。

怎么看:先抓主干,再抠细节

源码课最忌讳从头到尾顺着看,容易迷失在无数跳转里。建议先把精力放在容器启动和 Bean 实例化这两块。容器启动部分要弄懂 refresh 方法里各个步骤的调用顺序,搞清楚 BeanFactory 什么时候被创建、BeanDefinition 什么时候被加载。Bean 实例化部分重点跟一遍 createBean 的流程,从实例化到属性填充再到初始化,弄懂 BeanPostProcessor 在哪个节点介入。有了这条主干,再去看 AOP 怎么在 BeanPostProcessor 的基础上用动态代理织入逻辑,以及事务注解怎么通过 AOP 拦截方法调用。配套资料里的代码片段不要只看不动手,建议自己在本地建一个极简的 Spring 项目,对着课程讲到的关键方法打断点,用调试器一步步走。看源码不是背代码,是建立对调用链路的肌肉记忆,遇到报错能快速定位到框架的哪一层。

看完应能回答的问题与独立产出

学完这门课,你应该能脱离文档直接回答几个核心问题:Spring 启动时 BeanFactory 和 ApplicationContext 到底谁先创建;循环依赖为什么能用三级缓存解决,以及它在什么场景下会失效;AOP 代理对象在 Bean 生命周期中具体在哪一步生成。更重要的是,你应该能独立做两件事:一是拿到一个陌生的 Spring 报错,能根据异常栈快速判断是容器初始化阶段、Bean 实例化阶段还是代理生成阶段出的问题;二是自己写一个 BeanPostProcessor 或自定义标签解析器,扩展框架行为,而不是只会用现成注解。资料包里的内容要和本地调试配合着用,课程讲到哪个方法,就到本地源码里打断点跟一遍,不要只看不动。源码学习没有捷径,但跟着这门课把主干链路走通,日常开发里那些“莫名其妙”的框架行为,就不再是黑盒。

课程目录

1 spring5源码解析 (01:37:03)