druid 连接池可通过 druiddatasource 类代码配置,需设置驱动类名、jdbc url、用户名密码等基础参数,并调优 initialsize、maxactive、minidle 等关键属性,可选启用监控。

Druid 连接池可以通过 DruidDataSource 类直接在代码中配置,无需依赖 XML 或 Spring Boot 自动配置。核心是创建实例、设置连接参数、调优关键属性,并启动监控(可选)。
基础连接参数配置
必须设置数据库驱动类名、JDBC URL、用户名和密码,否则无法建立连接:
-
driverClassName:如
"com.mysql.cj.jdbc.Driver"(MySQL 8+)或"com.mysql.jdbc.Driver"(旧版) -
url:含数据库地址、库名、字符集和时区,例如:
"jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai" - username 和 password:数据库登录凭证
常用性能与可靠性配置
以下参数显著影响连接池行为,建议显式设置而非依赖默认值:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
- initialSize:初始化时创建的物理连接数,设为 2~5 较稳妥
-
maxActive(新版推荐用
maxTotal):最大活跃连接数,通常设为业务 QPS × 平均 SQL 执行时间(秒)× 安全系数(1.5~2),常见值 20~100 -
minIdle:空闲时保持的最小连接数,避免频繁创建销毁,建议设为
initialSize相同 - maxWait:获取连接最大等待毫秒数,超时抛异常,建议设 3000~5000
- timeBetweenEvictionRunsMillis:空闲连接检测间隔(毫秒),如 60000(1 分钟)
- minEvictableIdleTimeMillis:连接空闲多久后可被驱逐,如 1800000(30 分钟)
-
testWhileIdle:true,空闲检测时执行校验 SQL(配合
validationQuery) -
validationQuery:校验 SQL,如 MySQL 用
"SELECT 1",Oracle 用"SELECT 1 FROM DUAL"
开启内置监控(可选但推荐)
Druid 提供 Web 控制台查看连接池状态、SQL 统计等,需手动注册 Servlet 和 Filter:
- 添加
StatViewServlet映射到/druid/*,用于访问监控页面 - 添加
WebStatFilter拦截请求,统计 Web 关联的 SQL 和会话信息 - 通过
initParameters设置登录账号密码、是否允许清空数据等,例如:"loginUsername=admin", "loginPassword=123456", "resetEnable=false"
完整 Java 示例(无框架环境)
以下是一个可直接运行的配置片段:
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC");
dataSource.setUsername("root");
dataSource.setPassword("123456");
// 连接池大小
dataSource.setInitialSize(5);
dataSource.setMaxActive(20);
dataSource.setMinIdle(5);
// 获取连接超时与空闲管理
dataSource.setMaxWait(5000);
dataSource.setTimeBetweenEvictionRunsMillis(60000);
dataSource.setMinEvictableIdleTimeMillis(1800000);
dataSource.setTestWhileIdle(true);
dataSource.setValidationQuery("SELECT 1");
// 启用 PSCache(预编译语句缓存,Oracle/MySQL 可开)
dataSource.setPoolPreparedStatements(true);
dataSource.setMaxOpenPreparedStatements(20);
// 初始化(触发连接创建和校验)
dataSource.init();
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










