Java集成Druid连接池关键三步:加对依赖(非Spring项目用com.alibaba:druid≥1.2.20,Spring Boot 3用druid-spring-boot-3-starter)、配好数据源(显式设spring.datasource.type或@Primary,maxTotal替代maxActive,maxWaitMillis设正整数)、启用监控(正确注册StatViewServlet并放行路径)。

Java 中集成 Druid 连接池,关键在三步:加对依赖、配好数据源、启用监控(可选但强烈建议)。不是加个 jar 就完事,配置错一个参数,可能让服务启动卡住或线上连接耗尽。
非 Spring 项目:手动创建 + 显式配置
适用于传统 Servlet、Java SE 或轻量框架(如 JFinal、NutZ)。
- 必须引入 com.alibaba:druid 依赖(推荐 1.2.20+),不能只靠 starter
- 代码中 new DruidDataSource(),再逐项 set 参数,例如:
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl("jdbc:mysql://localhost:3306/test");
dataSource.setUsername("root");
dataSource.setPassword("123456");
dataSource.setInitialSize(5);
dataSource.setMaxTotal(20);
dataSource.setMinIdle(5);
dataSource.setMaxWaitMillis(3000); // 必须设正整数,避免无限等待
注意:maxActive 已废弃,请用 maxTotal;testOnBorrow 生产环境慎开,高并发下会压垮 DB,改用 testWhileIdle + timeBetweenEvictionRunsMillis 更稳妥。
立即学习“Java免费学习笔记(深入)”;
Spring Boot 3 项目:用 starter + 正确覆盖默认池
Spring Boot 默认用 HikariCP,即使你写了 @Bean DruidDataSource,它也可能被忽略。
- 引入 druid-spring-boot-3-starter(版本 1.2.20 起支持 SB3)
- 在
application.yml中显式指定类型:
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource - 不写
type,也不加@Primary,你的 Druid Bean 就不会生效
监控页面(Druid StatViewServlet)怎么跑起来
这是 Druid 的核心优势之一,但常因注册方式错误导致 404 或白屏。
- Spring Boot 3 中,需通过
@Bean注册StatViewServlet,并配置登录账号密码 - 路径映射要明确,比如
/druid/*,且确保没被 Spring Security 拦截(需放行该路径) - 关键配置项不能少:
allow(允许访问的 IP)、loginUsername、loginPassword
如果监控页打不开,先检查日志是否打印了 servlet 注册成功的提示,再确认路径和安全配置。
常见坑与绕过方案
很多问题不是不会配,而是踩了隐藏规则:
-
依赖冲突:项目里同时有 druid 和 druid-spring-boot-starter,版本不一致会报
NoClassDefFoundError -
密码加密后启动失败:用
ConfigTools加密后,必须配置filters: config并设置connectionProperties: config.decrypt=true -
removeAbandonedOnBorrow 误杀事务:该参数已废弃,新版用
removeAbandonedAfterNanos,值设太小会导致长事务连接被强行回收


















