源码阅读的思想
spring framework 的源码/源文件比较多,它们之间交叉引用,同时对外暴露多个接口。
spring framework 作为 library,阅读方法和 application 类似。
不同的是 application 最终只会对操作系统暴露出一个入口 main() ,而 library 会对 application 暴露出多个接口。
application 只要按照 main 的流程便能够理解; library 也是如此,只不过接口比较多。
为了找到这些接口,你可以去项目中去找抽象层次高的方法或者更推荐你去看官方文档。
切记人生苦短,代码无量。
技巧决定速度
整体把握框架
通过 Gradle 的构建工具了解项目之间的关系,同时了解每个项目的大致作用。
编写接口使用样例,使用 DEBUG 配合 IDE 查看调用栈
为什么要写样例再 debug ,看起来比直接从源码跳转复杂的多。
一般通用的接口内部的分支会很多,分支拥有新的分支,分支拥有新的分支,以此类推指数爆炸。
样例的好处在于他明确的在众多分支中为你选择了你预期结果应该走的分支。
所以,爱一个具体的人。
配合 IDE 进行提供的实用特性,帮助我们更好阅读源码
除了常见的点击跳转到源码,不同的 IDE 还提供其他有用的功能。
以 Visual Studio Code 举例。
强大的Palette:
filename:跳转文件$Class:跳转类@Var/Fun:跳转到当前文件的变量和方法
阅读注释文档
当遇到不理解的代码,代码的注释的文档或许可以帮助你。
了解约定俗成
约定俗成可以很好帮助你理解项目。
do开头的方法,一般都是实现某种功能的具体代码,比如
org.springframework.core.io.support.PathMatchingResourcePatternResolver#doFindAllClassPathResources(String)
Factory结尾的类,一般都是工厂模式