如何更好的阅读springboot3.0 源码

255 阅读4分钟

相信很多同学环境搭建好的之后无比开心,想着终于可以好好阅读源码了。于是整个项目这里点点,那里点点。最后发现源码的内容非常多,压根就不知道从哪里读起,于是过一阵子,代码就这样烂在了磁盘里。后面想起来又重新下载,鼓捣一通,又烂在磁盘里,就这样周而复始

其实,对于springboot这样庞大的代码,要阅读是需要有一定的技巧的,不能像无头苍蝇一样到处串,这样根本就读不下来,且会因此热情逐渐退却。这里笔者分享下自己阅读源码的小技巧,不但使用于springboot,也适用于其他开源项目的源码。我平时阅读源码主要通过一下这几点来进行。接下来我会展开说说

画板

1、总体认知

无论大家是出于什么原因开始想去阅读一个框架的源码,想必当动了想阅读源码的念头时,你对这个框架应该有一定的了解(总不能连用都没用过上来想看源码吧,这显然不现实)。以springboot框架为例,比较明显的特点是自动装配(为什么从spring时代那么复杂的配置,到springboot几乎不用配置就能用)、内嵌Tomcat、各种各样的starter、同时他也会包括spring里面的IOC、AOP、BeanFactory、事务等一系列核心的东西。对这些有了总体的认知之后,读起源码来会更加得心应手。

2、寻找切入点

正如上面说的,框架庞大而复杂,这些比较核心的东西,日常虽然经常用,但都是放在一个大的项目里,这样也不利于源码的阅读,你需要针对你想阅读的模块,尽可能精简的编写出一个可以运行的demo,摆脱其他干扰因素。然后用这个demo作为切入点开始去研究,会更加事半功倍。

以 smoketest.tomcat.SampleTomcatApplication为例,这个demo足够简单,可以作为研究springboot整个启动流程的入口。他相比于普通的java main方法,只是在类上多了一个@SpringBootApplication注解,因此这个注解必然是很核心的切入点,沿着这个切入点就能顺藤摸瓜

3、带着疑问去读

兴趣是最好的老师。一旦你对某个实现有疑惑,带着这个疑惑去源码中寻找答案是比较适合的方式。以springboot为例,为什么在类上加了@SpringBootApplication注解就可以简化掉很多spring时代很复杂的配置?相信带着这样一个问题去寻找答案,会比这里看看那里看看要来的实际的多,且更容易坚持下去。如果你连自己想干啥都不知道,那阅读会非常痛苦。

4、利用好注释

总所周知,作为一款框架,历经这么多年的迭代,其代码的量跟复杂程度可想而知。不要企图一天速成、或者一周速成。这不现实。有时候一个功能点就够我们研究许久。所以难免今天看一部分,明天看一部分。时间久了,可能还会忘了之前看过的内容。所以,你需要安自己的理解在源码里写注释,方便日后查阅。这也是为什么在源码搭建环节我强烈建议大家源码下载下来后,搞一个git项目,自己写了注释之后可以往上提交。

另外,成熟框架代码里本身的注释也是非常重要的,比较重要的地方基本都会有注释,虽然是英文的,但是阅读起来并不困难,当然,你也可以利用翻译软件。比较有用的注释:类注释,方法注释、代码块注释

5、适当舍弃

源码量大管饱,所以不可能面面俱到(当然,如果能力很强,忽略这点)。例如:框架里可能会有些读文件的操作,你看着看着钻进去看底层文件怎么是怎么读取的,因为底层可能涉及linux、win等较为底层的实现,你又钻进去看,这样时间线会拉得很长,虽然,能把这些底层的知识啃下来是不错,但是我个人觉得,钻太深,并不利于去了解整个框架。更框架相关性不大的,偏底层的东西有个大体认知即可。俗话说,有舍才有得。

以上这几点,是笔者平时阅读源码的一些习惯,可能未必对所有人适用。如果大家有其他的好方法,也可以一起交流哈。