Java数据库连接池Druid的配置参数有哪些
发表于:2025-11-14 作者:千家信息网编辑
千家信息网最后更新 2025年11月14日,这篇文章主要介绍"Java数据库连接池Druid的配置参数有哪些",在日常操作中,相信很多人在Java数据库连接池Druid的配置参数有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法
千家信息网最后更新 2025年11月14日Java数据库连接池Druid的配置参数有哪些
这篇文章主要介绍"Java数据库连接池Druid的配置参数有哪些",在日常操作中,相信很多人在Java数据库连接池Druid的配置参数有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java数据库连接池Druid的配置参数有哪些"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
1、配置参数
Druid 连接池的配置参数兼容 DBCP,个别配置的语意有所区别。
| 配置 | 缺省值 | 说明 |
|---|---|---|
| name | 配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。如果没有配置,将会生成一个名字,格式是:"DataSource-" + System.identityHashCode(this)。配置此属性版本至少为 1.0.5,低于该版本设置 name 会出错。 | |
| url | 连接数据库的 url | |
| username | 连接数据库的用户名 | |
| password | 连接数据库的密码。如果你不希望密码直接写在配置文件中,可以使用ConfigFilter。 | |
| driverClassName | 根据url自动识别 | 这一项可配可不配,如果不配置 Druid 会根据 url 自动识别 dbType,然后选择相应的 driverClassName |
| initialSize | 0 | 初始化时建立物理连接的个数。初始化发生在显示调用 init 方法,或者第一次 getConnection 时 |
| maxActive | 8 | 最大连接池数量 |
| maxIdle | 8 | 已经不再使用,配置了也没效果 |
| minIdle | 最小连接池数量 | |
| maxWait | 获取连接时最大等待时间,单位毫秒。配置了 maxWait 之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock 属性为 true 使用非公平锁。 | |
| poolPreparedStatements | false | 是否缓存 preparedStatement,也就是 PSCache。PSCache 对支持游标的数据库性能提升巨大,比如说 oracle。在 mysql 下建议关闭。 |
| maxPoolPreparedStatementPerConnectionSize | -1 | 要启用 PSCache,必须配置大于 0,当大于 0 时,poolPreparedStatements 自动触发修改为 true。在 Druid 中,不会存在 Oracle下 PSCache 占用内存过多的问题,可以把这个数值配置大一些,比如说 100 |
| validationQuery | 用来检测连接是否有效的 sql,要求是一个查询语句,常用select 'x'。如果 validationQuery 为 null,testOnBorrow、testOnReturn、testWhileIdle 都不会起作用。 | |
| validationQueryTimeout | 单位:秒,检测连接是否有效的超时时间。底层调用 jdbc Statement对象的 void setQueryTimeout(int seconds) 方法 | |
| testOnBorrow | true | 申请连接时执行 validationQuery 检测连接是否有效,做了这个配置会降低性能。 |
| testOnReturn | false | 归还连接时执行 validationQuery 检测连接是否有效,做了这个配置会降低性能。 |
| testWhileIdle | false | 建议配置为 true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于 timeBetweenEvictionRunsMillis,执行validationQuery 检测连接是否有效。 |
| keepAlive | false (1.0.28) | 连接池中的 minIdle 数量以内的连接,空闲时间超过 minEvictableIdleTimeMillis,则会执行 keepAlive 操作。 |
| timeBetweenEvictionRunsMillis | 1分钟(1.0.14) | 有两个含义: 1) Destroy 线程会检测连接的间隔时间,如果连接空闲时间大于等于 minEvictableIdleTimeMillis 则关闭物理连接。 2) testWhileIdle 的判断依据,详细看 testWhileIdle 属性的说明 |
| numTestsPerEvictionRun | 30分钟(1.0.14) | 不再使用,一个 DruidDataSource 只支持一个 EvictionRun |
| minEvictableIdleTimeMillis | 连接保持空闲而不被驱逐的最小时间 | |
| connectionInitSqls | 物理连接初始化的时候执行的 sql | |
| exceptionSorter | 根据dbType自动识别 | 当数据库抛出一些不可恢复的异常时,抛弃连接 |
| filters | 属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有: 监控统计用的 filter:stat 日志用的 filter:log4j 防御 sql 注入的 filter:wall | |
| proxyFilters | 类型是List |
2、使用
2.1、直接使用
2.1.1、引入依赖
com.alibaba druid 1.2.8
2.1.2、使用例子
package com.abc.demo.general.dbpool;import com.alibaba.druid.pool.DruidDataSource;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class DruidCase { public static void main(String[] args) { DruidDataSource druidDataSource = new DruidDataSource(); Connection connection = null; try { druidDataSource.setName("测试连接池"); druidDataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); druidDataSource.setUrl("jdbc:mysql://10.40.9.11:3306/mydb?useUnicode=true&characterEncoding=UTF-8"); druidDataSource.setUsername("root"); druidDataSource.setPassword("123456"); druidDataSource.setInitialSize(2); druidDataSource.setMinIdle(2); druidDataSource.setMaxActive(5); druidDataSource.setValidationQuery("select 1"); druidDataSource.setTestWhileIdle(true); druidDataSource.setTestOnBorrow(true); druidDataSource.setTestOnReturn(false); druidDataSource.setMaxWait(6000); druidDataSource.setFilters("slf4j"); connection = druidDataSource.getConnection(); Statement st = connection.createStatement(); ResultSet rs = st.executeQuery("select version()"); if (rs.next()) { System.out.println(rs.getString(1)); } } catch (SQLException e) { e.printStackTrace(); } finally { close(connection); } //实际使用中一般是在应用启动时初始化数据源,应用从数据源中获取连接;并不会关闭数据源。 druidDataSource.close(); } private static void close(Connection connection) { if (connection != null) { try { connection.close(); } catch (SQLException e) { e.printStackTrace(); } } }}2.2、在 SpringBoot 中使用
2.1.1、引入依赖
org.springframework.boot spring-boot-starter-parent 2.3.12.RELEASE org.springframework.boot spring-boot-starter-web org.springframework spring-jdbc com.alibaba druid-spring-boot-starter 1.2.8 mysql mysql-connector-java
2.1.2、单数据源
application.yml 配置:
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://10.40.9.11:3306/mydb?useUnicode=true&characterEncoding=UTF-8 username: root password: 123456 type: com.alibaba.druid.pool.DruidDataSource druid: initial-size: 2 min-idle: 2 max-active: 5 validation-query: select 1 test-while-idle: true test-on-borrow: true test-on-return: false max-wait: 6000 filter: slf4j
使用:
@Autowiredprivate DataSource dataSource;
2.1.3、多数据源
application.yml 配置:
spring: datasource: druid: db1: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://10.140.9.11:3306/mydb?useUnicode=true&characterEncoding=UTF-8 username: root password: 123456 initial-size: 2 min-idle: 2 max-active: 5 validation-query: select 1 test-while-idle: true test-on-borrow: true test-on-return: false max-wait: 6000 filter: slf4j db2: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://10.40.9.12:3306/mydb?useUnicode=true&characterEncoding=UTF-8 username: root password: 123456 initial-size: 2 min-idle: 2 max-active: 5 validation-query: select 1 test-while-idle: true test-on-borrow: true test-on-return: false max-wait: 6000 filter: slf4j
数据源配置类:
package com.abc.demo.config;import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.Primary;import javax.sql.DataSource;@Configurationpublic class DataSourceConfig { @Primary @Bean("dataSource1") @ConfigurationProperties("spring.datasource.druid.db1") public DataSource dataSourceOne(){ return DruidDataSourceBuilder.create().build(); } @Bean("dataSource2") @ConfigurationProperties("spring.datasource.druid.db2") public DataSource dataSourceTwo(){ return DruidDataSourceBuilder.create().build(); }}使用:
@Autowired@Qualifier("dataSource1")private DataSource dataSource1;@Autowired@Qualifier("dataSource2")private DataSource dataSource2;2.1.4、开启监控功能
Druid 内置了一些监控,Spring Boot 环境下通过少量配置就可开启这些功能。
application.yml 配置:
spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://10.40.9.11:3306/mydb?useUnicode=true&characterEncoding=UTF-8 username: root password: InsYR0ot187! type: com.alibaba.druid.pool.DruidDataSource druid: initial-size: 2 min-idle: 2 max-active: 5 validation-query: select 1 test-while-idle: true test-on-borrow: true test-on-return: false max-wait: 6000 filter: slf4j,stat,wall #启用日志、监控统计、防火墙功能 web-stat-filter: #web监控配置 enabled: true stat-view-servlet: #监控页面配置 enabled: true url-pattern: /druid/*
监控页面:
到此,关于"Java数据库连接池Druid的配置参数有哪些"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
配置
数据
数据库
监控
数据源
时间
检测
参数
有效
属性
性能
空闲
学习
功能
数量
方法
时候
物理
自动识别
最大
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全 智能制造大会
检察院网络安全自查工作
数据库6
手机邮箱服务器设置主机名怎么填
新西兰网络安全学校
coc升级数据库
上海万户网络安全教育
数据库设计说明书非空键
数据库设计期末感想
香港云服务器维护步骤
九阴真经最早的服务器
互联网金融科技企业文化
数据库如何删除表值函数
工作软件开发
数据库并发控制机制怎么实现
数据库页面小于高速缓存页面大小
软件开发基础必背
网络安全中常见的标准
数据库系统工程师属于
云数据库安全策略
互联网科技公司的slogan
数据库与应用程序
宁归来软件开发商
合肥软件开发驻场咨询
学计算机网络技术能专升本吗
邯郸系统软件开发价位
奇缘幻境游戏服务器
国家安全包括网络安全么
服务器安全狗怎么开启端口
互联网数码科技大师