一、构建SqlSessionFactory
public SqlSessionFactory build(InputStream inputStream, String environment, Properties props) {
try {
XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, environment, props);
Configuration config = parser.parse();
return build(config);
} catch (Exception e) {
throw ExceptionFactory.wrapException("Error building SqlSession.", e);
} finally {
ErrorContext.instance().reset();
try {
inputStream.close();
} catch (IOException e) {
// Intentionally ignore. Prefer previous error.
}
}
}
XMLConfigBuilder是抽象类public abstract class BaseBuilder的实现类,抽象类和接口有啥区别呢?
二、Configuration里面有啥呢?
public Configuration() {
//支持的数据库连接之多JDBC、MANAGED、JNDI、POOLED、UNPOOLED
typeAliasRegistry.registerAlias("JDBC", JdbcTransactionFactory.class.getName());
typeAliasRegistry.registerAlias("MANAGED", ManagedTransactionFactory.class.getName());
typeAliasRegistry.registerAlias("JNDI", JndiDataSourceFactory.class.getName());
typeAliasRegistry.registerAlias("POOLED", PooledDataSourceFactory.class.getName());
typeAliasRegistry.registerAlias("UNPOOLED", UnpooledDataSourceFactory.class.getName());
备注:
JdbcTransactionFactory和ManagedTransactionFactory师出同门,都是TransactionFactory接口实现类。
JndiDataSourceFactory、PooledDataSourceFactory、UnpooledDataSourceFactory的继承关系如下图:
DataSourceFactory
-->JndiDataSourceFactory
-->UnpooledDataSourceFactory
-->PooledDataSourceFactory
-->UserDefineDataSourceFactory(这个是我自己定义的数据源)
//Cache缓存也支持PERPETUAL、FIFO、LRU、SOFT、WEAK五种,都是Cache接口的实现类,你也可以自己定义缓存接口
typeAliasRegistry.registerAlias("PERPETUAL", PerpetualCache.class.getName());
typeAliasRegistry.registerAlias("FIFO", FifoCache.class.getName());
typeAliasRegistry.registerAlias("LRU", LruCache.class.getName());
typeAliasRegistry.registerAlias("SOFT", SoftCache.class.getName());
typeAliasRegistry.registerAlias("WEAK", WeakCache.class.getName());
}
DataSourceFactory接口
TransactionFactory接口
自定义的数据源连接池是这个样子的
为了使用Druid,把Druid加入Mybatis之中
Cache接口的定义如下:
相关推荐
### Spring MVC 与 Oracle 整合的关键知识点 ...通过以上详细的配置文件解读,我们已经了解了如何使用Spring MVC、MyBatis与Oracle进行整合。这些配置是整个项目的基础,确保了项目的正常运行和数据处理能力。
### Spring框架核心概念与源码解析 #### 一、Spring框架简介 Spring是一个开源的Java应用框架,由Rod Johnson创建并领导开发。Spring的核心特性包括依赖注入(Dependency Injection,DI)、面向切面编程(Aspect ...
SSH架构是Java开发中一种常见的企业级应用框架,由Spring、Struts和Hibernate三个开源框架组合而成。...在实际开发中,还可以根据需求集成其他组件,如Spring MVC、MyBatis等,进一步增强应用的功能和性能。
在源码解读部分,`AbstractRoutingDataSource`是Spring JDBC提供的一种抽象数据源,它为动态数据源提供基础支持。`targetDataSources`是一个Map,用于存储数据源键(通常是字符串)与实际数据源对象的映射。`...
四、源码解读 1. **主启动类**:查找@SpringBootApplication注解,这是SpringBoot应用的入口点,启动后会自动扫描指定包下的组件。 2. **配置文件**:如application.properties,配置数据库连接信息、服务器端口、...
以上是对“MyBatis视频教程”所涵盖知识点的详细解读,旨在帮助初学者快速掌握该框架的核心概念和技术要点,同时也为进阶用户提供深入理解和实践指导。希望这份资料能够满足您对于MyBatis学习的需求,并助力于您的...
以下是对该书内容的详细解读: 1. **SpringBoot概述**:SpringBoot的核心理念是“约定优于配置”,它提供了默认的配置,减少了大量的XML配置工作。书中会详细介绍SpringBoot的起源、设计目标以及如何快速搭建一个...
hsweb4基于spring-boot2,全响应式的后台管理框架 功能,特性 基于 , 的通用响应式CRUD H2,Mysql,SqlServer,PostgreSQL 响应式r2dbc事务控制 响应式权限控制,以及权限信息获取 RBAC权限控制 ...
【标题】"配置裸Ibatis"的详细解读 在Java Web开发中,Ibatis作为一个轻量级的持久层框架,以其灵活的SQL映射和强大的数据访问能力深受开发者喜爱。"配置裸Ibatis"指的是不依赖任何容器或框架,直接在Java应用中...