03、MyBatis 源码分析 - 前序(三)

经过前两篇文章的解析,我觉得大家可能已经开始跃跃欲试了,突然觉得其实它离我们没有那么远,用的技术好像也没有那么高端大气上档次,只是经过了层层封装,然后就让我们认不清它了。不过在真正开始学习源码之前,我们还有最后一步需要去做,那就是 源码包结构分析

要学习源码,必须要有一个 切入点 ,有些同学可能会想,为啥不按照上一篇文章的生命周期那样,将每行代码更仔细的分析呢。但是这样其实还是比较粗浅的,这也就是为什么很多视频标题写的就是 《XXX天搞定XXX源码》,因为其实他们分析的只是生命周期,和一些面试常问的点,确实用不了多久。如果你只是想快速的了解一个框架是怎么运行的,那么那样确实也够了。但是如果真正的想要深入的学习框架源码,而不是粗浅的了解和使用和应付面试,就必须要花大量时间去 思考 去 读 去 理解 去 总结 源码。

思考:思考分为两步。

(一): ,猜的是包或者具体的类的作用,作为一名码农,我们最讨厌两件事,第一件事是看到别人的代码没有注释,第二件事是写注释。看代码猜功能的难度 >>> 知道功能读代码的难度,所以在读之前要看注释、类名、包名、方法名猜测功能。由于注释的完备、类所属哪个包的规则不定(根据功能、根据谁使用等规则)所以并不是都看了就能明白其功能。所以 合理的猜测很重要!很重要!很重要

(二):‘自己写’,何为自己写,即如果是自己来写的话,会怎么写,怎么能实现这个功能,只需要想好就行了,不需要真的写出来(也可以写代码),由于每个人的水平和每个功能的实现难度不一致,所以这一步尽量做。

:阅读也是不可缺少的一步,猜测永远只是猜测,不细致的去读,永远不能验证自己的猜测,网上的文章说的再多再详细(还可能是错的),也许都比不上自己去看一眼源码。

理解:在阅读之后,要去理解,要印证自己的猜想,和自己写的话,有什么不同,为什么别人要这么去设计。理解大佬的思路是比较困难的,如果理解不了的话,就可以暂时放下,继续往后看,可能看多了,你就能理解了。

总结:如果不进行总结的话,那么知识永远是别人的,而不是自己的,把总结后的知识点需要的时候拿出来看一眼,应付面试啥的,很轻松。

切入点

首先说说我对切入点的理解,要阅读一个开源框架,一定要找到切入点。切入点一定要是外部依赖最少的,或者没有外部依赖的,在阅读的时候就不会怎么卡壳。例如上一篇文章中 Mybatis 生命周期的学习,其实在阅读的时候可能会有很多的干扰,因为调用了其他类的方法,就需要跳转过去看,当再回来的时候可能对刚才的流程又不是那么清晰。这样一来一回可能会浪费大量的时间。

这么来看的话,似乎就形成了一个恶性循环,没有好的切入点阅读代码的效率就很低,而要找到好的切入点一定要对代码比较熟悉。但始终要记住 我们是站在巨人的肩膀上 那么多优秀的文章和书籍,其实就是帮我们走了一个捷径,帮助我们能找到切入点。

Mybatis 包结构

 

按照包的功能,将包分成了三个大类:

  • 基础功能包:这些包用来为其他包提供一些外围基础功能,如文件读取功能、反射操作功能等。这些包的特点是功能相对独立,与业务逻辑耦合小
  • 配置解析包:这些包用来完成配置解析、存储等工作。这些包中的方法主要在系统初始化阶段运行
  • 核心操作包:这些包用来完成数据库操作。在工作过程中,这些包可能会依赖基础功能包提供的基础功能和配置解析包提供的配置信息。这些包中的方法主要在数据库操作阶段运行

从基础包 -> 配置解析包 -> 核心操作包 层层深入由外至内学习源码

参考文献

1、 《通用源码阅读指导书:Mybatis源码详解》--易哥;