MyBatis源码结构概述
经过第3章的学习,我们对 MyBatis的初始化阶段、数据读写阶段都有了大略的了解,同时也对整个流程中涉及的类、方法有了模糊的认识。
在这一章,我们将对 MyBatis源码中所有的包从功能上进行归类划分,为后续分类睁开源码阅读工作奠定底子。
包结构
首先下载 MyBatis的源码,可以通过以下地点下载带中文注释的3.5.2版:
下载项目源代码后,在“src\main\java\org.apache.ibatis”目
录下可以看到 MyBatis 项目的所有包,共 20个,如图4-1所示。
图4-1 MyBatis项目的包
分组结构
按照包的功能,我们将所有的包分成三大类:
· 底子功能包:这些包用来为其他包提供一些外围底子功能,如文件读取功能、反射操作功能等。这些包的特点是功能相对独立,与业务逻辑耦合小。
· 设置解析包:这些包用来完成设置解析、存储等工作。这些包中的方法主要在系统初始化阶段运行。· 核心操作包:这些包用来完成数据库操作。在工作过程中,这些包大概会依赖底子功能包提供的底子功能和设置解析包提供的设置信息。这些包中的方法主要在数据库操作阶段运行。
以上只是功能上的大抵划分,各个包中的类、方式实际是互相关联、交织耦合在一起的。
在其他项目的源码阅读中,也可以按照上面的方式对包进行功能归类。这会使得后面的源码阅读工作更加有条理、有层次。
按照功能划分好的包如下所示。
· 底子功能包:
-exceptions
-reflection
-annotations
-lang
-type
-io
-logging
-parsing
· 设置解析包:
-binding-builder
-mapping
-scripting
-datasource
· 核心操作包:
-jdbc
-cache
-transaction
-cursor
-executor
-session
-plugin
可以用图4-2来表示这些包在整个 MyBatis中的作用。
图4-2 MyBatis项目中包的作用
源码阅读过程中有一个非常重要的技巧,那就是从整个项目的外围源码入手。
· 外围源码很少依赖核心源码,相对独立。先阅读外围源码,受到其他未阅读部分的干扰较小。
· 核心源码大量依赖外围源码。在阅读核心源码时应确保其涉及的外围源码均已阅读完毕,如许可以降低核心源码的阅读难度。
于是整个源码阅读过程会如同剥洋葱一般,由外及内、逐层深入。MyBatis 源码中,底子功能包是最外围的包,设置解析包位于中间,核心操作包位于内层。
因此,本文中会按照底子功能包、设置解析包、核心操作包的次序,以包为单位,对包中的源代码逐一进行阅读。
本文给各人讲解的内容是通用源码阅读mybatis源码详解:MyBatis源码结构概述
- 下篇文章给各人讲解的是mybatis源码详解:exceptions包源码阅读;
- 觉得文章不错的朋友可以转发此文关注小编;
- 感谢各人的支持
|
|
|
|
|