mybatis与spring集成中SqlSessionFactory创建流程
2016-09-17 22:53
681 查看
Mybatis作为优秀且广泛使用的轻量级持久层框架经常与Spring集成一起使用,集成过程中sqlSessionFactory的创建流程是什么样的呢?本文结合mybatis、mybatis-spring源码以及UML时序图的方式阐述如何进行:
以下为Mybatis与Spring集成的部分配置,主要是涉及SqlSessionFactory bean:
Spring在进行bean的相关注入过程中,以下是SqlSessionFactory bean创建UML时序图:
说明:
1)首先MapperScannerConfigurer在basePackage下scan对应关于Mapper配置文件的interface,实例化为MapperFactoryBean;
2)SqlSessionFactoryBean在完成依赖注入后,在afterPropertiesSet方法中创建SqlSessionFactory示例,其过程也就是解析mybatis-config.xml以及*.xml的过程,XMLConfigBuilder在parse之前,优先将SqlSessionFactoryBean注入的objectFactory、objectWrapperFactory、typeAliasesPackage、typeAliases、plugins、typeHandlersPackage、typeHandlers属性实例添加到Configuration对象中,XMLConfigBuilder解析完成后,设置其关联的Configuration示例的transactionFactory、databaseIdProvider属性。
完成SqlSessionFactory的 bean创建;
3)sqlSessionTemplate获取sqlSessionFactory实例进行依赖注入,以方便使用mybatis相应的数据库操作。
以下为Mybatis与Spring集成的部分配置,主要是涉及SqlSessionFactory bean:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="configLocation" value="classpath:META-INF/mybatis/config/mybatis-config.xml"></property> <property name="dataSource" ref="dataSource" /> <property name="mapperLocations" value="classpath:META-INF/mybatis/mapper/mysql/*.xml" /> </bean> <!-- 配置sqlSessionTemplate --> <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory" /> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="annotationClass" value="org.springframework.stereotype.Repository" /> <property name="basePackage" value="com.bitvalue" /> </bean>
Spring在进行bean的相关注入过程中,以下是SqlSessionFactory bean创建UML时序图:
说明:
1)首先MapperScannerConfigurer在basePackage下scan对应关于Mapper配置文件的interface,实例化为MapperFactoryBean;
2)SqlSessionFactoryBean在完成依赖注入后,在afterPropertiesSet方法中创建SqlSessionFactory示例,其过程也就是解析mybatis-config.xml以及*.xml的过程,XMLConfigBuilder在parse之前,优先将SqlSessionFactoryBean注入的objectFactory、objectWrapperFactory、typeAliasesPackage、typeAliases、plugins、typeHandlersPackage、typeHandlers属性实例添加到Configuration对象中,XMLConfigBuilder解析完成后,设置其关联的Configuration示例的transactionFactory、databaseIdProvider属性。
if (this.transactionFactory == null) { this.transactionFactory = new SpringManagedTransactionFactory(); } configuration.setEnvironment(new Environment(this.environment, this.transactionFactory, this.dataSource)); if (this.databaseIdProvider != null) { try { configuration.setDatabaseId(this.databaseIdProvider.getDatabaseId(this.dataSource)); } catch (SQLException e) { throw new NestedIOException("Failed getting a databaseId", e); } }
完成SqlSessionFactory的 bean创建;
3)sqlSessionTemplate获取sqlSessionFactory实例进行依赖注入,以方便使用mybatis相应的数据库操作。
相关文章推荐
- 重构Mybatis与Spring集成的SqlSessionFactoryBean(1)
- mybatis源码分析(一,sqlSessionFactory的创建流程)
- Mybatis运作流程(手动方式创建sqlSessionFactory)
- 深入浅出重构Mybatis与Spring集成的SqlSessionFactoryBean(上)
- Spring-mybatis整合 获取properties 创建SQLSessionFactory失败
- Spring-mybatis整合配置错误,显示不能创建spring配置文件中的sqlSessionFactory的Bean
- 重构Mybatis与Spring集成的SqlSessionFactoryBean(2)
- 使用Mybatis3.10+spring3.10集成发生的错误 SpringManagedTransactionFactory.newTransaction(Ljava/sql/Connection
- SqlSessionFactory创建SqlSession测试mybatis的sql
- Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory
- MyBatis-Spring-SqlSessionFactoryBean(转)
- spring SqlSessionFactoryBean创建SqlSessionFactory
- MyBatis-Spring-SqlSessionFactoryBean
- Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory
- MyBatis SqlSessionFactory的几种常见创建方式
- Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory
- MyBatis-Spring-SqlSessionFactoryBean
- Mybatis3.2.1使用例四:SqlSession方式集成Spring、不使用DAO辅助类
- MyBatis-Spring 之SqlSessionFactoryBean
- spring SqlSessionFactoryBean创建SqlSessionFactory