druid是阿里巴巴维护的数据库连接池,用它自己文档的原话说就是
Druid是Java语言中最好的数据库连接池。
官方文档地址如下
https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98
maven引入如下依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</version>
</dependency>
spring配置如下:
<!--init和close要配置-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="username" value="username" />
<property name="password" value="password" />
<property name="url" value="jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=utf8&autoReconnect=true&rewriteBatchedStatements=TRUE&serverTimezone=UTC" />
<!--连接池最大大小-->
<property name="maxActive" value="200" />
<!--连接池最小大小-->
<property name="initialSize" value="1" />
<!--从池中获取connection的超时时间-->
<property name="maxWait" value="60000" />
<!--连接池最小空闲连接数量-->
<property name="minIdle" value="1" />
<!--这个比较麻烦,只需要这样写就行了,不配置该项则testWhileIdle、testOnBorrow和testOnReturn无效-->
<property name="validationQuery" value="select 1;" />
<!--空闲连接检测间隔,这里设置为7小时,应该可以避免mysql的默认8小时连接超时导致的wait_timeout的异常-->
<property name="timeBetweenEvictionRunsMillis" value="25200000" />
<!--空闲连接存活时间,超过该时间的空闲连接会在timeBetweenEvictionRunsMillis空闲连接检测时被关闭-->
<property name="minEvictableIdleTimeMillis" value="3600000" />
<!--开启timeBetweenEvictionRunsMillis空闲连接检测-->
<property name="testWhileIdle" value="true" />
<!--官方建议关闭,性能影响太大-->
<property name="testOnBorrow" value="false" />
<!--官方建议关闭,性能影响太大-->
<property name="testOnReturn" value="false" />
</bean>
druid官方文档说:
DruidDataSource配置兼容DBCP。
所以DBCP的部分配置在druid中是直接支持的。
DBCP官方文档地址:
http://commons.apache.org/proper/commons-dbcp/configuration.html