能力缺口:别只停留在调包,得看懂扩展点怎么落地
很多人写 Spring 和 MyBatis 日常业务没问题,但一被问到 MyBatis 是怎么把自己的 Mapper 代理对象无缝塞进 Spring 容器里,或者 Spring 的后置处理器在 Bean 生命周期里到底拦了几次,就开始含糊其辞。这门课解决的就是这种“会用但不懂底层机制”的缺口。它不教你写增删改查,而是直接拿 Spring 提供的扩展点开刀,拆解 MyBatis 如何利用这些扩展点完成集成,以及 Spring 内部后置处理器的源码流转。适合有实际 Spring 开发经验、能独立看懂基础 IoC 和 AOP 源码但卡在框架集成细节上的开发者。如果你连 BeanDefinition 都没听过,建议先补完基础 IoC 再来看,否则源码追踪环节会非常吃力。
建议先看哪几块:从集成入口到底层拦截器
资料里的内容虽然紧凑,但逻辑链条很清晰,建议按顺序啃。第一块直接看 MyBatis 如何利用 Spring 提供的扩展点,重点盯住 ClassPathMapperScanner 和 FactoryBean 的注册过程,搞清楚为什么我们只写接口就能拿到实现类。第二块看 Spring 如何扩展写出优雅的代码,这部分别只听结论,要自己在本地环境把 ImportBeanDefinitionRegistrar 和 BeanFactoryPostProcessor 的回调时机断点打出来对比。第三块是最硬核的 Spring 后置处理器底层源码分析,这是前面两块的根基,重点理清 BeanPostProcessor 的两个回调方法在 populateBean 前后的执行顺序。看的时候别贪快,遇到 AbstractAutowireCapableBeanFactory 的 createBean 方法,务必跟着源码把上下文调用栈自己走一遍。
学完能干什么与资料配合练习方法
学完这套源码分析,你应该能独立干几件实事:一是自定义一个类似 MyBatis 的轻量级框架集成,通过实现 Spring 的扩展点把第三方组件托管给 IoC 容器;二是遇到 Bean 初始化报错或 AOP 代理失效的疑难杂症,能直接从后置处理器的执行链路里定位问题,而不是靠瞎猜。配套练习方面,资料包里的视频只是线索,千万别干看。建议你在本地拉一套 Spring Framework 源码,版本尽量对齐课程讲解的分支。看视频讲到某个扩展点时,立刻暂停,去源码里找到对应的接口实现类,写一个最简单的 Demo 打断点验证。比如讲到 MyBatis 的扩展点,就自己写个空白 FactoryBean 注册进去,观察它是怎么替换原始 BeanDefinition 的。只有把视频里的调用链变成你自己断点里跑过的调用栈,这套源码分析才算真正补进你的能力库里,别假装看一遍就会。
课程目录
1-1 [spring和mybatis主流框架的源码分析] mybatis如何利用spring提供的扩展点 (32:43) 1-2 [spring和mybatis主流框架的源码分析] spring如何扩展写出优雅的代码 (38:52) 1-3 [spring和mybatis主流框架的源码分析] spring后置处理器的底层源码分析 (39:10)





