- 前言
- 一、DruidDataSourceFactory
- 二、工厂里的方法解析
- 三、config方法
- 四、getObjectInstance方法的作用
- 总结
前言
数据库连接池的创建代码解析
一、DruidDataSourceFactory
DruidDataSourceFactory 实现 ObjectFactory
通过 DruidDataSourceFactory.createDataSource(Map); 方式可以创建一个DataSource 并根据Map里的参数,配置好常用参数
二、工厂里的方法解析
// 为DruidDataSource设置参数的核心方法
public static void config(DruidDataSource dataSource, Map properties);
// todo ObjectFactory接口方法的实现,作用未知
public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable, ?> environment);
// 内部使用的方法
protected DataSource createDataSourceInternal(Properties properties) throws Exception {
DruidDataSource dataSource = new DruidDataSource();
config(dataSource, properties);
return dataSource;
}
public static DataSource createDataSource(Properties properties) throws Exception {
return createDataSource((Map) properties);
}
public static DataSource createDataSource(Map properties) throws Exception {
DruidDataSource dataSource = new DruidDataSource();
config(dataSource, properties);
return dataSource;
}
三、config方法
config方法中,通过获取map中的参数,对 DataSource 中属性进行复制
| 参数名 | 含义 | 默认值 |
|---|---|---|
| defaultAutoCommit | 默认自动提交 | true |
| defaultReadOnly | 默认只读 | - |
| defaultTransactionIsolation | 事务隔离级别 NONE、READ_COMMITTED、READ_UNCOMMITTED、REPEATABLE_READ、SERIALIZABLE | - |
| defaultCatalog | - | - |
| driverClassName | 驱动 | - |
| maxActive | 最大活动连接数 | 8 |
| minIdle | 最小的连接池数量 | 0 |
| initialSize | 初始链接数 | 0 |
| maxWait | 最大等待时间 | -1 |
| testOnBorrow | 申请连接时执行validationQuery检测连接是否有效 | false |
| testOnReturn | 归还连接时执行validationQuery检测连接是否有效 | false |
| timeBetweenEvictionRunsMillis | - | 60 * 1000L |
| minEvictableIdleTimeMillis | - | 1000L * 60L * 30L |
| phyTimeoutMillis | - | -1 |
| testWhileIdle | - | true |
| password | 密码 | - |
| url | 链接 | - |
| username | 用户名 | - |
| validationQuery | 用来检测连接是否有效的sql | - |
| validationQueryTimeout | 你懂的 | -1 |
| filters | 通过命名加载插件,通过,分割 | - |
| init | 如果为true,则直接进行初始化DruidDataSource | - |
本文仅仅简单介绍了druid数据库连接池工厂的使用,提供的简单的方法创建DruidDataSource



