druid连接池在spring boot中需正确配置依赖、连接参数、监控页面和sql安全filter。依赖用druid-spring-boot-starter 1.2.16+;yml配initial-size、max-active等关键参数;启用/druid/监控页并设登录认证与ip白名单;必须启用stat、wall、config三filter实现监控、防注入和密码加密。

Druid 连接池在 Java(尤其是 Spring Boot)项目中集成简单,但要真正用好监控、防注入、密码加密等能力,关键在于配置逻辑清晰、参数不遗漏、安全不妥协。下面分四块讲清楚:依赖引入、基础连接池配置、监控页面启用、SQL 安全防护。
依赖引入:选对 starter 和版本
Spring Boot 3.x 项目必须使用 JDK 17+,对应 Druid starter 推荐版本为 1.2.16 及以上(如 1.2.19),避免因字节码兼容问题导致监控失效或启动报错。
在 pom.xml 中添加:
-
druid-spring-boot-starter(核心自动配置) - 数据库驱动(如
mysql-connector-java,scope 为 runtime) - 可选:
spring-boot-starter-actuator(便于后续对接 Prometheus)
基础连接池配置:yml 里写清关键参数
配置以 spring.datasource.druid. 开头,重点不是堆参数,而是盯住这几个生产必需项:
- initial-size 和 min-idle:建议设为 5~10,避免冷启动时连接获取慢
- max-active:根据数据库最大连接数和应用并发量定,常见值 20~50;过高易打满 DB,过低会排队等待
-
validation-query:MySQL 用
SELECT 1,Oracle 用SELECT 1 FROM DUAL -
test-while-idle:设为
true,配合time-between-eviction-runs-millis(建议 60000,即 1 分钟)做空闲连接保活检测 -
remove-abandoned-on-borrow:Spring Boot 3 已弃用,改用
remove-abandoned-on-maintenance+remove-abandoned-timeout防连接泄漏
启用内置监控页面:StatViewServlet
访问 /druid/ 路径就能看到实时连接池状态、SQL 统计、慢查询列表、URI 关联分析等——这是 Druid 最直观的价值点。
在 application.yml 中开启并加固:
stat-view-servlet.enabled: truestat-view-servlet.url-pattern: /druid/*-
stat-view-servlet.login-username和login-password:生产环境必须修改,默认 admin/admin 是高危漏洞 -
stat-view-servlet.reset-enable: false:禁用重置按钮,防止误清监控数据 -
stat-view-servlet.allow:填内网 IP 段(如192.168.1.*),禁止公网直接访问 -
stat-view-servlet.deny:可明确拉黑某些风险 IP
SQL 安全与审计:加 Filter 不是可选项
只配连接池不加 Filter,等于只用了 Druid 1/3 的能力。三个常用 Filter 建议默认启用:
-
stat:开启 SQL 执行统计和慢日志记录,配置
filter.stat.log-slow-sql: true+filter.stat.slow-sql-millis: 1000 -
wall:SQL 防注入防火墙,自动拦截
DROP TABLE、UNION SELECT、无 WHERE 的 DELETE/UPDATE 等危险操作 -
config:支持数据库密码加密,用
ConfigTools.encrypt()加密后,配置中写密文 +connection-properties: config.decrypt=true;config.decrypt.key=xxx
Filter 启用方式统一在 yml 中声明:filter: stat: enabled: true,无需写 Java 配置类。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











