要有效学习Spring-Framework(今后简称为”SF“)框架源码,我们需要弄明白几个问题:
为什么学习
spring系列框架是当前最主流的java开源框架,SpringFramework是spring系列框架的出发点,是初心,同时也是spring系列框架的基础,因此如果能弄明白SF,不仅可提升技术技能,也利于在工作中更好使用SF及更快解决相关问题。
学习什么
学习Spring-Framework框架源码,肯定不仅仅是读读代码,可学习内容很多:
1、学习思想:了解框架的出发点-解决什么样的问题;了解框架架构,这么设计优点在哪里?框架至今已经20年了,是如何满足可持续发展?
2、学习方法:设计和实现中应用了什么样技术方法,哪些方法用的巧妙,哪些方法用的系统
3、学习知识:用到的Java哪些知识点;用到哪些设计模式。
怎样学习
由于Spring-Framework源代码很庞大,如果直接阅读你会发觉特别困难,主要原因:
1、概念多:容器、上下文、资源加载、 Bean生明周期、AOP等
2、框架实现的技术点多:仅核心的就有dependency injection, events, resources, i18n, validation, data binding, type conversion, SpEL, AOP等
3、框架应用技的术点多,如简单工厂、工厂方法、代理模式、观察者模式等。
4、框架为保持可持续发展,设计非常灵活,预留很多可扩展点,典型特征就是类多、继承层次多、方法跳转多等。阅读过程中,跳转太多,很容易发散出去收不回来。
我们采用应用分析方法,具体如下:
1、搭建学习SpringFramework的Maven应用,从最基础开始(spring-context)引入,逐步扩展使用更多特征。
2、每使用一个Spring-Framework新特征,通过追溯方式阅读、分析源代码。
3、针对每个特征,分析源代码主要类、类关系、使用的技术、设计思路和技术等。
4、学习不明白的技术点,查阅相关资料弄懂。
5、整理成学习笔记。
学习要点
1、保证时间:学习SF要时间预留要充足,不要想着几天就完成。
2、坚持:困难的时候别放弃,相信自己一定能弄明白。
3、别想着看一遍就能看明白:开始看源码时,大流程为主,细节为辅,不要执着于某个细节。实在头疼的地方,先放过。后面再反过来看,多几次可以懂了。
4、多做笔记、多修改笔记:好记性不如烂笔头,多做笔记;前面笔记可能出偏差或错误,没关系,翻出来再改
5、概念清楚、知识点弄明白:基于源码、借助源码之外(百度、官网、翻译工具等)的信息弄明白概念和知识点。如什么是容器、什么是资源、单例模式是怎么回事等。
6、多看注释,看方法的名称,参数和返回值。看注释,理解类,属性和方法的作用,着重第一段注释;看方法的名称,参数和返回值能对方法的作用有很明显的说明。
7、多动手,编写使用代码去理解;跟踪调试,查看执行流程。
8、多思考:框架为什么这么做,好处体现在哪里;有没有更好的方式。
9、他山之石可以攻玉:借助别人对源代码的解析来理解。但如果只看别人的源代码解析,收获不会大的,必须亲自经历一篇才有效。
了解SF框架
学习之前,我们需先对SF框架有个整体印象。官方给出的SF运行期框架如下:
除了Test模块外,整个框架的基础就是Core Container,这就是我们开始学习的切入点,相信把这些搞明白后,按图索骥,后续学习就容易很多了。