mybatis源码阅读(一)

来源:互联网 发布:编程随想 编辑:程序博客网 时间:2024/05/18 13:08

一直以来都想阅读一些开源框架的源码来提升自己的编程水平,但是诸如spring、hibernate比较流行但又比较重量级的框架,源码十分不好阅读(功力不够),恰好最近的项目在使用mybatis,看了看源码··还是能够看懂的,所以了就选择mybatis作为我第一个源码学习的框架。。

http://mybatis.github.io/mybatis-3/zh/getting-started.html

这是mybatis的官方文档,我们就根据文档的说明,从最简单的使用例子一步一步的来跟踪源码,由于也是第一次读源码,所以有些误读或不解也在所难免,希望大家能帮忙指正修改。

String resource = "org/mybatis/example/mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

这是官方文档提供的一个简单的初始化例子,通过xml配置文件实例化一个SqlSessionFactory,那么首先就来看SqlSessionFactoryBuilder的build方法,


可以看出调用了另一个build方法,继续追踪


这段代码很明了,构造一个XMLConfigBuilder对象,然后调用build方法返回结果,参数为XMLConfigBuilder对象调用parse()解析后的结果,
先看看XMLConfigBuilder的构造方法。

可以看到XMLConfigBuilder的构造方法里,调用了另一个构造方法


嗯···貌似没什么特别的,那就看parse方法吧


调用了paraseConfiguration方法(传入了一个根节点configuration,配置文件具体内容如下图,解析xml的具体细节我们不关注,方式无非就那么几种,这里应该是使用xpath解析),再看parseConfiguration方法


root结点就是configuration节点了,这个方法很明显可以看出是解析各种节点了,properties节点,typeAliases,plugin,objectFactory,mapper,environment等,这些节点信息都在配置文件里配置,一个简单的配置文件如下

解析完毕,所有的信息都保存到之前传进来的configuration对象里了。
其中很多细节都是解析XML的过程,这边就不一一查看了。
接下来就是通过这个配置信息初始化一个SqlSessionFactory实例了,如下。

直接返回了一个DefaultSqlSessionFactory的对象,以configuration为构造参数
构造方法如下,并没有什么特别的

到此为止,sqlSessionFactory的初始化已经完成,可以看出最终返回的是DefaultSqlSessionFactory的实例

0 0