mybatis的Configuration详解
上一篇介绍了mybatis中SqlSessionFactory的创建过程,今天来学习它默认实现中的唯一属性Configuration
回顾
还是最开始的mybatis源码环境中的测试代码如下图:
利用mybatis查出数据只用三步:创建SqlSessionFactory、通过SqlSessionFactory创建SqlSession、SqlSession执行selectOne方法。
上一篇文章梳理了SqlSessionFactory创建过程的源码,发现它返回的是它的默认实现类DefaultSqlSessionFactory,而默认实现类有有唯一的一个属性configuration,所以SqlSessionFactory根本的依赖还是Configuration类。
Configuration基础信息说明
Configuration类中有很多的属性,下面是基础属性的源码以及部分说明如下图:
上面主要是一些settings属性,settings属性是MyBatis 的基础性设置,它们会改变 MyBatis 的运行时行为。更加完整的说明在官方文档上:https://mybatis.org/mybatis-3/zh/configuration.html。去掉zh可以查看英文版本。
这里面有一个熟悉protected Properties variables = new Properties();这个属性对应是我们在mybatis配置文件中有时会配置的properties节点的内容,有时候我们会配置url、driver、username、password等信息。然后在其他节点使用${}来使用。
扩展属性和无参构造
上面介绍了决定mybatis一些基础行为的属性,在Configuration还存有一些mybatis可用来扩展的和运行中需要信息,下图中是这些属性已经Configuration的无参构造函数:
上一节是mybatis中的环境配置信息,而上图是一些mybatis运行中要用到的信息,比如:resultMap集合、sql语句集合、插件列表、缓存、类型别名、类型处理器等。
其中很多属性使用的是Configuration中的了一个内部静态类StrictMap,它继承自HashMap,对HashMap的装饰在于增加了put时防重复的处理,get时取不到值时候的异常处理,这样在使用时就不需要关心各种异常,简化应用层逻辑。
Configuration的无参构造函数主要往typeAliasRegistry中put了一些数据,typeAliasRegistry是类型注册器,通过这段代码知道为什么可以在配置文件中配置“”这类信息了,因为通过type的值能够找到对应的类。
再看parse方法
在上一篇文章SqlSessionFactory创建过程中讲到了Configuration是通过无参构造函数创建了一个Configuration对象,然后在最后调用了parse方法。无参构造函数上一节已经进行了说明,最后再来看上一篇文章最后的parse方法调用的parseConfiguration方法如下图:
这次在看parseConfiguration方法中的内容就更加清楚在干嘛了。
总结
今天只梳理了Configuration中包含的属性以及默认构造函数,分析完成后最终还是指向了上一篇文章的parseConfiguration方法,那么从下一篇文章开始就来仔细分析一下parseConfiguration对Configuration具体做了哪些设置以及流程。
到此这篇关于mybatis的Configuration详解的文章就介绍到这了,更多相关mybatis Configuration内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
- 如何在ASP.NET Core 的任意类中注入Configuration
- C# 添加对System.Configuration.dll文件的引用操作
- matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
- .Net Core3.0 配置Configuration的实现
- 详解@ConfigurationProperties实现原理与实战
- @ConfigurationProperties绑定配置信息至Array、List、Map、Bean的实现
- 详解配置类为什么要添加@Configuration注解
- Spring @Configuration注解及配置方法
- Springboot @Configuration @bean注解作用解析
- SpringBoot @ConfigurationProperties使用详解
- 继承WebMvcConfigurationSupport后自动配置不生效及如何配置拦截器
- 解析SpringBoot @EnableAutoConfiguration的使用
- Spring中基于Java的配置@Configuration和@Bean用法详解
- @Configuration与@Component作为配置类的区别详解
- .NET Core 3.0之创建基于Consul的Configuration扩展组件
- SpringBoot 中 AutoConfiguration的使用方法
- MyBatis异常-Property ''configLocation'' not specified, using default MyBatis Configuration
- Spring源码解析之Configuration
相关文章
详解Java如何在CompletableFuture中实现日志记录
这篇文章主要为大家详细介绍了一种slf4j自带的MDC类,来记录完整的请求日志,和在CompletableFuture异步线程中如何保留链路id,需要的可以参考一下2023-04-04
最新评论