目的意义
Spring对于Java工程师的重要地位可参考语文、数学在小学课程里地位。当然啊,学不好也不是不行。说这个又不得不提我老公。人家凭借自己是东北人,比我这个山东人高考少一百多分。相当于一科没考嘛!人家不也工作的挺好嘛。老公为了向我体现实力说:那年数学特别难,自己考了100(满分150)呢。我无奈的摇摇头:我考了130多。
工作了,咱们终于摆脱了地域上的歧视。渐渐淡忘不能自主投胎的遗憾。Spring不能瘸腿呀。在Spring上最显示功力的地方就是Spring的源码。对它的掌握,各种花费时间的问题:启动时报错无法启动啦,执行效果问题啦。处理起来就有底气了,可以大大地节省时间。
学习方法
学习Spring源码,需要带着目标和问题去看。这个很好理解:一千个人心中有一千个哈姆雷特。每个人看到源码的注意点是不同的,想要起到更好的效果就像故事一样要有一条主线,自己的目标和问题就是主线。
怎么才能有目标和问题呢?首先要有大局观,对Spring要有一个整体的了解。可以参考《学习Spring的思考框架》这一篇。里面有张思维导图:
提出了三个基本问题:
我们现在是什么样的?
我们要做成什么样(解决什么问题、有什么收益)?
怎么才能达成(解决路径)?
通过这三个问题解释了Spring的目的意义。引出了Spring的三大核心:控制反转、依赖注入和AOP。
核心是最先要掌握的东西。但是一开始就研究Spring源码会被Spring源码中的细枝末节带偏,脱离主线。因为其中99%的代码是为了解决1%的问题。所以我写了三篇手撕Spring源码的文章:
《手撕Spring源码(二),彻底理解Spring后置处理器》
《手撕Spring源码(三),彻底理解Spring循环依赖原理》
旨在帮助大家把细枝末节去掉,回归Spring源码的设计本身,看代码的核心部分都是在解决什么问题。
然后才是问题驱动,带着问题对Spring源码进行debug。看Spring是怎么解决这些问题的。《SpringBoot启动原理》有详细介绍怎么带着问题去debug源码。
知识地图
在《网络通信知识地图》和《总结篇:消息中间件MQ的学习境界和路线》中我都提到过:知识地图是一种知识导航系统,并显示不同的知识存储之间重要的动态联系。不是具体的知识点,而是知识点的索引。
我把Spring源码学习人工的划分为4个阶段。每个阶段有对应的文章供参考。
大局观
《专治不会看源码的毛病--spring源码解析AOP篇(2017版)》
源码分析
具体应用
问题分析
《Spring Kafka的异步bug》
《Spring Boot 使用的经典错误-找不到Bean了》
总结
说自己掌握了一门语言至少要掌握基本的语法和数据结构、核心库、常用第三方框架、流行的开发框架和部署方法。而这些知识底层有很强的关联性,不断增加自己的知识的深度,更好的触类旁通。
编程一生
因为公众号平台更改了推送规则,如果不想错过内容,记得读完点一下“在看”,加个“星标”,这样每次新文章推送才会第一时间出现在你的订阅列表里。
PDCA方法论,检查自己是否错过更新:每周三晚上8点左右,我都会更新文章,如果你没有收到,记得点开【编程一生】公众号找一下(*^▽^*)