不管对于那个段位的 Developer 来说,读源码都是一件好处颇多的事情,特别于初学者而言,这能迅速的吸纳优秀框架精华代码营养,迅速成长。
阅读源码其实要有一些功底,比如熟悉Java26种常用的设计模式、反射、泛型。
1.获取框架源代码,运行调试读源码。大多主流的框架源码都会放到https://github.com/上(国内有些也托管到码云上了),下载代码时主要选择"tags"或"release"中获取相应的版本,不要获取master或者dev版本,
因为这些版本还不稳定,可能会跑不起来,影响程序运行。程序能跑起来,对于程序员来说,就很容易Debug分析框架了。
2.从宏观到微观,先从整体把握,再到细处。有些复杂的框架,可能不知道从哪里开始读取,入口在哪,这时就需要先从宏观去把握。例如Mybatis,不知从哪读起,那么就得先把握
mybatis是什么,做什么的。mybatis是一个ORM框架,是一个应用与数据库交互的一个中间框架,那么它的作用就是获取数据源,翻译Java程序,然后对数据库进行操作,
那么就可以带着这种宏观的理解去读源码,如怎么获取数据源的,怎么获取程序员写的SQL语句,怎么执行SQL语句,执行后的结果怎么返回给程序。
3.从微观反推宏观。有时就想看下一个框架是如何实现特定功能时,就可按此方法读源码。还是读mybatis源码,比如我就想知道我写的一个SQL语句框架是怎么获取并得到。
那么可以在项目中搜索mapper.xml中的sql,看下是在哪个类哪个方法处理,然后一步步跟下去。
4.连想带猜。优秀的框架在命名都是有一定含义的,可以猜测某些类某些方法是干什么用的,然后再去验证。
看懂源码后我们就可以开始修改源代码。
1.把框架源码下载后,直接修改,然后发布jar包。这种办法的弊端是,我们改好某个版本的jar包,过了一段时间,公司决定用最新版本,可最新版本还是没有修复某个Bug,
这时,你又得再次修复,再次发布,很麻烦。
2.引用某个框架后,在项目中直接新建一个要修改的类,包名也要一样,比如要修改com.mybatis.pojo.User,那么在自己的项目中新建一个和官方一个包名和类名的类,然后再修改,
这样项目中有该类,引用的Jar包中也有该用,项目会优先使用本项目中的类,这样再更新官方的Jar,修改仍有效果。
本地在传统企业呆久了,天天拧螺丝,最近才开始研究优秀框架,希望对5年以上的朋友有所帮助。要想成为高手tomcat,spring,mybatis,,hashMap源码必须读起。