上一篇介绍了Configuration的properties和settings,接下来继续。程序员
设置别名
别名也是mybatis中最重要的配置之一,能够经过很简单的一个字符串来代替一个Class,它能够减小不少的重复代码,别名类的源码以下图:数组
能够看到它底层数据结构是一个map,而且初始化的时候已经把常见的别名设置到map中了,在前面讲到的Configuration的初始化时,也设置了不少好比JDBC、POOLED、SLF4J、LOG4J等。数据结构
在mybatis的配置文件中也能够设置别名,别名的配置及解析源码以下图:mybatis
经过在配置文件的typeAliases节点上设置别名,在其余地方能够很方便的使用了,不只是在mapper文件中,在配置文件中transactionManager 节点的type属性JDBC也是应该设置了别名,以及dataSource节点的 type对应的POOLED都是由于Configuration在初始化时中设置了别名。app
须要注意的是在配置文件中typeAliases支持两种设置一种是package配置一种是简单的typeAliases,package配置的信息被设置到了configuration属性的typeAliasRegistry属性中,而普通配置的是放到当前XMLConfigBuilder对象的typeAliasRegistry属性中,package配置能够把指定包下面的类都加入进来,源码实现以下图:学习
没有指定别名的会只有注解或者类的简单名称做为key。ui
插件与对象工厂配置
首接下来解析的是插件和建立对象的工厂类配置,源码与注释以下图:spa
插件会根据配置的地址初始化成Interceptor的实现类放到configuration的interceptorChain属性中,InterceptorChain类维护一个Interceptor集合,插件这一块后面会专门去学习,这里就先了解是如何保存进去的,而且能够知道自定义的插件都必需要实现Interceptor接口才行。插件
接下来是三个配置是设置configuration的objectFactory、objectWrapperFactory、reflectorFactory三个属性:对象
objectFactory是MyBatis建立结果对象时使用的工厂类;
objectWrapperFactory是MyBatis对结果对象进行包装的工厂;
reflectorFactory是mybatis中加载配置文件中的各类插件类时使用的反射工厂;
这三个属性在configuration都有默认实现,通常不作修改,后面使用到能够了解下,只须要知道咱们也能够自定义mybatis返回结果的封装就行。
environments节点解析
接下来是environments节点解析,解析源码以下:
从上图源码咱们能够总结出来几个关键的地方:
首先是environments节点的default属性会读取给到当前XMLConfigBuilder对象的environment属性;
而后是遍历子节点environment,子节点的id必须等于上一步的保存的environment才能加到configuration的environment属性中,因此咱们能够在配置文件中设置不一样环境environment节点,经过不一样的id区分,在environments指定就行;
Environment的初始化主要是事务工厂和数据源的初始化。一样咱们先知道它是如何产生的以及存放的位置,在后面使用的时候再来具体学习。
总结
今天主要是梳理了别名、插件和environment的设置,别名的多种配置方式,这里还留有一个疑问就是两种方式别名存储的位置为何不一样。
而后就是插件了,目前插件是放到插件的一个数组当中的,同时插件必需要实现指定的接口。
而environment能够同时设置多个,可是只有指定的id那个太能设置到configuration中。
configuration的配置设置仍是最后一点了,下篇文章完成。
Java程序员平常学习笔记,如理解有误欢迎各位交流讨论!