如果我们使用 Spring 集成 Mybatis 使用的话,可以在 Spring 的配置文件,比如 applicationContext.xml
或者其他自定义的配置文件中找到下面这一段配置。
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis-config.xml" />
bean>
可以从上面了解到使用了 SqlSessionFactoryBean 作为 Spring 加载配置文件的主入口,并且将 dataSource 和 configLocation 两个属性值注入到 SqlSessionFactoryBean,并且等待 Spring 启动的时候将注册过的 SqlSessionFactoryBean 加载。当然这边并不准备细讲 SqlSessionFactoryBean,而是主要对 Mybatis 做详细了解。
在 SqlSessionFactoryBean 可以找到 xmlConfigBuilder = new XMLConfigBuilder(this.configLocation.getInputStream(), null, this.configurationProperties);
这一行代码,这行代码则是加载 mybatis-config.xml 真正的过程,也就是说 XMLConfigBuilder 是专门负责 mybatis-config.xml 加载的一个类。再往下找则可以找到 XMLConfigBuilder 对配置进行解析的部分,下面代码中 xmlConfigBuilder.parse();
则是 XMLConfigBuilder 真正开始解析的位置,并且可以在其中找到 parseConfiguration()
这一个方法。
if (xmlConfigBuilder != null) {
try {
xmlConfigBuilder.parse();
LOGGER.debug(() -> "Parsed configuration file: '" + this.configLocation + "'");
} catch (Exception ex) {
throw new