上节内容我们了解了SqlSessionFactoryBean所有暴露出来的属性,方便用户通过配置对mybatis扩展!今天我们一起看看configLocation源码!
对configLocation进行源码分析我就的知道这个属性在spring和mybatis整合的时候怎么使用!
一.configLocation如何使用
Spring核心配置文件中的配置如下(SqlSessionFactoryBean配置configLocation属性,去加载mybatis的config配置文件)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias type="com.zzy.model.User" alias="User" />
</typeAliases>
<mappers>
<mapper resource="com/zzy/xml/UserMapper.xml" />
</mappers>
<!--
<plugins>
<plugin interceptor="com.zzy.intercept.SQLStatsInterceptor"></plugin>
</plugins>
<databaseIdProvider type="org.apache.ibatis.mapping.VendorDatabaseIdProvider"></databaseIdProvider>
-->
</configuration>
这里标签属性实际上和上节SqlSessionFactoryBean 下属性是一致的。暂时不做详细配置!(也就是可以把SqlSessionFactoryBean下属性全部配置到mybatis配置文件中)
二.源码分析过程
1.configLocation 的入口源码
先看这个属性被mybatis读取位置的源码
SqlSessionFactoryBean >> buildSqlSessionFactory
XMLConfigBuilder xmlConfigBuilder = null;
if (this.configuration != null) {
configuration = this.configuration;
if (configuration.getVariables() == null) {
configuration.setVariables(this.configurationProperties);
} else if (this.configurationProperties != null) {
configuration.getVariables().putAll(this.configurationProperties);
}
} else if (this.configLocation != null) {
xmlConfigBuilder = new XMLConfigBuilder(this.configLocation.getInputStream(), null, this.configura