Spring 源码学习总结篇

为何读源码

在平常工做中,产品不断写业务需求,他们加班一天,咱们开发就得工做一周来完成。git

业务领域达到必定地步后,发现重复的业务代码让我不断的粘贴、复制和修改,日复一日,担忧本身变成一个业务代码生产机器,而没法面对新技术和环境变化。github

同时也有危机感,长江后浪推前浪,本身不继续学习的话,很快就会有人超过。spring

并且我算是比较热心的好同窗,喜欢帮别人解决问题和记录解决方案,因此不但愿在别人问我工做中有什么经常使用的框架,遇到这个问题该怎么办,我却回答不上的感受设计模式

一样,但愿你们懂得提问的艺术,经过度娘和谷歌都没找到解决方案后,再去与别人探讨问题,否则会被鄙视的,别问我为啥懂得/(ㄒoㄒ)/网络

因此就沉下心来,从工做中一直在用的 Spring 框架源码学起,看大牛们的代码设计。框架


怎么读源码

虽然我拿 Spring 做为例子,但模板能够套用到你想阅读的任何源码上~jvm


查官方文档

官方文档地址学习

能够说,开源框架的官方文档是最完整,最全面的使用和说明介绍,详细到每行代码的用途和异常都有说明(大雾),反正只有想不到,没有官方文档没写的。编码

若是在运行当中,跟官方文档不符合的场景,应该算 BUG,那么读者发现了,能够给他们提 ISSUE,为开源生态圈作出本身的一份贡献~命令行


查技术社区

不少开源框架的文档是英文写的,这是个不争的事实,因此直接看英文的话,会很吃力。

但国内也有大牛和大神,咱们会从中学习,而后不断改良和吸取优势,而后再建立更符合国内需求的框架。极客们会将翻译或者改良建议公布到网络,与咱们你们进行分享。

例如去 CSDN掘金 和思否等技术社区,都已经有人翻译或者写了本身的看法,咱们先从中文文档学习,遇到疑惑或者官方文档更新了,与官方文档比对后,得出本身最后的结论和使用方法。


总结与分享

我喜欢学习,但讨厌无心义的学习

以前看到微笑大神在 知识星球「Java极客技术」 里写的主题「如何高效的学习」:

文章中提到了“学习金字塔”模型,有如下七个层次:

1 听讲 2 阅读 3 视听 4 演示 5 讨论 6 实践 7 教给他人

而后学习内容的保留率从上往下依次递增:

9b6abed3e6b0831bab89d6067a17280d.png

下面是二者对比后得出的结论:


减小被动学习

咱们上学时经历过太多的被动学习,高中时还好,老师上课时,台下的学生认真听讲,下课后还记得老师在课堂上讲的大部份内容。

但到了大学后,台下的学生更多,老师没法兼顾这么多学生,学生也有不少课堂外的活动,还记得有张动图,两个学生在上高数课,老师在黑板上写了几行公式,而后学生瞌睡,眯眼了一会,睁开眼睛,发现黑板上写满了高等数学定理...

因此只是看书看视频却不动手实践,这样被动学习的效率低,若是到最后忘得一干二净,这样的学习会显得无心义。


学会主动学习

我也认为学习不是一步登天,也不可能将本身只看过一次的内容彻底记牢,跟微笑哥同样,我一年前看过 jvm 的知识,后来工做中用得比较少,在须要用到的时候,我又回去看了一遍书本,后来我将这些经常使用的命令总结了一下,在后来使用时,一边翻阅笔记,同时命令行敲得更快了一点!

网上也有不少学习视频,看视频的同时,要本身敲下代码,可以正常运行起来,成功运行时会有一种成就感,同时也会加深本身的理解,能够在下次遇到类似场景时进行借鉴,去解决实际问题。

因此不能再局限于被动学习的阶段,这样很容易学了就忘,要踏出一步,主动学习,动手实践,而后进行总结和分享,不断进行输出,让学习更有意义~


从中收获了什么

这里的收获也有两种类型:

目标收获

  1. 加深了 Spring 框架的基础结构IoCAopMVC 等基础概念有了更深的了解

  2. 良好的代码风格

  • 举个例子,我的感受,在代码设计上,源码作到了高内聚,低耦合,通用和规范性的抽象到顶层类,例如看到不少 abstract 抽象父类,里面作了不少复杂操做,但会提供一些模板方法,经过继承,让子类去扩展实现,在子类调用父类的方法,作到了 「关闭修改,开放扩展」
  • 还有入口方法进行容易理解,罗列了关键步骤,而后复杂实现交给了子类,同时变量和方法名也很直观,看其名,知其义,注释也不少,可以减低阅读难度。
  1. 多种设计模式 简单工厂、工厂方法、单例模式、模板方法等等,都在源码中有所体现,在了解总体结构时,能够弥补以前看设计模式书籍的不足,加深对它们的理解 (PS:「Java极客技术」知识星球里面每周都会有设计模式的分享,能够加入进去,在里面一块儿加深设计模式的学习

经过上面的学习,在以后本身编码时,会注意到这些细节,而后不断提升本身的编码能力


额外收获

  1. 提高写做能力
  • 学会一个 demo 很容易,成功运行虽有点难度,但根据教程和资料,弄成功是没有问题的,难就难在写出来教会别人。

  • 以前写的更多偏向于速记型,是为了本身查看的,根据关键信息速查,本身回顾也得花上一段时间,因此别人不必定能看懂。此次想要让本身回顾起来更快速,因而在语言组织以及格式编排上画了一点时间,尽量的完善笔记,提高了写做的能力。

  1. 转换心情
  • 不厚道的说一句,现在太多贩卖焦虑的推文,我也清楚明白人无忧虑和追求,是不会有所进步的。

  • 但我也认识到,若是看到焦虑却想着坐享其成,那是更可怕的事情,一不当心就会掉落营销者他们所设的陷阱,中止了前进。

  • 何不换种思路,心中保持担心,但心态放轻松,不要想着坐享其成,而是克服苦难,继续加强本身的技能。因此此次的沉淀学习也是想让本身冷静下来,沉浸在书籍中,获取解决一个又一个疑问的喜悦

  • 客观的说,个人担心仍是没有消除,但个人心态转变了一些,想要经过增加的技术体现本身的价值,在实际工做中解决实际问题,获得别人的确定。


一千个读者有一千个哈姆雷特,一样的书籍你们的感悟应该也会不同,以上只是我的的分享,期待听到朋友们的留言

我是惊奇,一个追求自律和技术,但愿带给你惊喜和奇妙的阳光宅男~ 期待下期再会


参考资料

一、 github.com/ryanhanwu/H…

相关文章
相关标签/搜索