分享

Spring源码的学习方法和知识地图

 编程一生 2022-04-03

目的意义

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循环依赖原理

旨在帮助大家把细枝末节去掉,回归Spring源码的设计本身,看代码的核心部分都是在解决什么问题。

然后才是问题驱动,带着问题对Spring源码进行debug。看Spring是怎么解决这些问题的。《SpringBoot启动原理》有详细介绍怎么带着问题去debug源码。

知识地图

在《网络通信知识地图》和《总结篇:消息中间件MQ的学习境界和路线》中我都提到过:知识地图是一种知识导航系统,并显示不同的知识存储之间重要的动态联系。不是具体的知识点,而是知识点的索引。

我把Spring源码学习人工的划分为4个阶段。每个阶段有对应的文章供参考。

大局观

代码整洁之道--边界

你看不懂的spring原理是因为不知道这几个概念

专治不会看源码的毛病--spring源码解析AOP篇(2017版)

源码分析

Spring参数的自解析--还在自己转换?你out了!

SpringBoot优雅退出

具体应用

SpringBoot整合web容器

把对象交给spring管理的3种方法及经典应用

Java&Spring过时的经典语录

问题分析

《Spring Kafka的异步bug》

Spring Boot 使用的经典错误-找不到Bean了

总结

说自己掌握了一门语言至少要掌握基本的语法和数据结构、核心库、常用第三方框架、流行的开发框架和部署方法。而这些知识底层有很强的关联性,不断增加自己的知识的深度,更好的触类旁通。

编程一生

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多