前面章节已经把MyBatis的全局配置文件的解析分析完成,下面继续对整合类SqlSeesionFactoryBean,代码进行分析。
if (this.transactionFactory == null) {
this.transactionFactory = new SpringManagedTransactionFactory();
}
Environment environment = new Environment(this.environment, this.transactionFactory, this.dataSource);
configuration.setEnvironment(environment);
if (this.databaseIdProvider != null) {
try {
configuration.setDatabaseId(this.databaseIdProvider.getDatabaseId(this.dataSource));
} catch (SQLException e) {
throw new NestedIOException("Failed getting a databaseId", e);
}
}
这里是Spring的配置文件,MyBatis整合Spring的实现(1)中1的SpringXML配置(样例)。
也就是需要建立SpringManagedTransactionFactory事务工厂。工厂构建完成,根据新事物工厂与数据源重新生成环境信息。这里在通过Spring配置提供的数据源获取当前数据库产品的名称。
总结
这里就会覆盖MyBatis的全局文件中设计的事务工厂及数据源。Configuration(全局配置类)中的databaseId也会被覆盖。这里通过DEBUG,来附上最终Configuration(全局配置类)的属性信息。