一、依赖
这里试验的是1版本dbcp。实际上dbcp2的配置也如出一辙。
// * commons-pool-1.6.jar
// * commons-dbcp-1.4.jar
// * commons-logging-1.2.jar
二、基本配置
private static BasicDataSource setupDataSource() {
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3306/learn?characterEncoding=UTF-8");
ds.setUsername("root");
ds.setPassword(null);
ds.setInitialSize(4);//default 0
ds.setMaxActive(8);
ds.setMaxWait(20);
ds.setMaxIdle(4);
ds.setMinIdle(0);
return ds;
}
此配置仅用于测试,生成环境依据负载调整。
三、验证配置
有两种方案能够实现验证。
1、事件性质-分别在连接归还、借出和空闲时控制;这里配置为仅空闲时验证
public void config() {
bds.setValidationQuery("SELECT 1");
bds.setValidationQueryTimeout(1000*10);
bds.setTestWhileIdle(true);// default false
bds.setTestOnReturn(false);// default false
bds.setTestOnBorrow(false);// default true
bds.setTimeBetweenEvictionRunsMillis(4*1000);//default -1 which means turn off
bds.setNumTestsPerEvictionRun(4);// default 3
}
说明:
仅设置testWhileIdle为true时,timeBetweenEvictionRunsMillis和