【SpringBoot 3.x】Druid Starter配置详解与监控实战 📅 2026/7/15 10:49:00 1. Druid连接池与SpringBoot 3.x的完美结合Druid作为阿里巴巴开源的数据库连接池在Java开发者中享有盛誉。它不仅仅是一个高性能的连接池更是一套完整的数据库解决方案。在SpringBoot 3.x项目中使用Druid可以带来诸多优势监控功能强大内置SQL监控、会话统计等功能防御机制完善提供SQL注入防御性能调优灵活支持丰富的连接池参数配置扩展性强支持Filter机制方便功能扩展我曾在多个生产项目中采用Druid作为连接池实测下来它的稳定性和监控能力确实远超其他同类产品。特别是在高并发场景下合理的参数配置可以让系统性能提升30%以上。2. 环境准备与依赖配置2.1 版本选择要点SpringBoot 3.x需要特别注意Druid Starter的版本兼容性。常见的坑是使用了错误的Starter导致自动装配失败。以下是正确的依赖配置!-- SpringBoot 3.x专用Starter -- dependency groupIdcom.alibaba/groupId artifactIddruid-spring-boot-3-starter/artifactId version1.2.18/version /dependency踩坑提醒千万不要使用druid-spring-boot-starter这是给SpringBoot 2.x用的。我在第一次迁移项目时就犯了这个错误导致监控页面一直404。2.2 自动装配问题解决当前版本(1.2.18)存在一个已知问题缺少自动装配配置文件。解决方法是在resources目录下创建META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件内容为com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceAutoConfigure这个配置我是在排查监控页面404问题时发现的官方文档中并没有明确说明算是比较隐蔽的一个坑。3. 核心参数配置详解3.1 基础连接池配置以下是一份经过生产验证的配置模板适用于大多数中小型应用spring: datasource: druid: initial-size: 5 min-idle: 5 max-active: 20 max-wait: 60000 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 30000 validation-query: select x test-while-idle: true test-on-borrow: false test-on-return: false参数调优经验initial-size不宜过大否则启动时会占用过多资源max-active需要根据数据库最大连接数合理设置time-between-eviction-runs-millis建议设置在1分钟左右3.2 高级性能优化对于高性能要求的场景可以启用PSCachespring: datasource: druid: pool-prepared-statements: true max-pool-prepared-statement-per-connection-size: 20注意Oracle数据库建议开启此功能MySQL则视情况而定。我在一个Oracle项目中开启后性能提升了约40%。4. 监控功能实战配置4.1 WebStatFilter配置WebStatFilter用于统计web请求信息spring: datasource: druid: web-stat-filter: enabled: true url-pattern: /* exclusions: *.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*这个配置可以让Druid统计所有请求的SQL执行情况排除静态资源以减少开销。4.2 StatViewServlet配置监控控制台的配置spring: datasource: druid: stat-view-servlet: enabled: true url-pattern: /druid/* login-username: admin login-password: admin allow: 127.0.0.1 reset-enable: false安全建议生产环境一定要修改默认账号密码通过allow限制访问IP禁用reset-enable防止误操作清空统计数据5. 安全防护配置5.1 SQL防火墙配置Druid的WallFilter可以有效防御SQL注入spring: datasource: druid: filters: stat,wall,slf4j wall: enabled: true db-type: mysql config: delete-allow: false drop-table-allow: false我在实际项目中遇到过多次SQL注入尝试开启WallFilter后都能有效拦截。特别是对于Web应用这个功能必不可少。5.2 慢SQL监控慢SQL是性能杀手Druid可以自动识别spring: datasource: druid: filter: stat: slow-sql-millis: 1000 log-slow-sql: true建议将slow-sql-millis设置为业务可接受的最大查询时间。我曾经通过这个功能发现了一个执行时间达5秒的SQL优化后系统吞吐量提升了3倍。6. 多数据源配置技巧对于复杂系统可能需要配置多个数据源Configuration public class DruidConfig { Primary Bean ConfigurationProperties(spring.datasource.druid.master) public DataSource masterDataSource() { return DruidDataSourceBuilder.create().build(); } Bean ConfigurationProperties(spring.datasource.druid.slave) public DataSource slaveDataSource() { return DruidDataSourceBuilder.create().build(); } }对应的YAML配置spring: datasource: druid: master: url: jdbc:mysql://master-host:3306/db username: user password: pass slave: url: jdbc:mysql://slave-host:3306/db username: user password: pass多数据源配置时要注意必须指定Primary数据源每个数据源的监控需要单独配置事务管理需要特殊处理7. 生产环境最佳实践经过多个项目的实战总结出以下经验监控页面安全一定要设置IP白名单和强密码参数调优根据实际压力测试结果调整连接池参数定期检查通过监控数据发现潜在性能问题日志整合将Druid日志接入统一日志系统版本升级及时关注Druid的安全更新我在金融项目中曾遇到连接泄漏问题正是通过Druid的监控功能快速定位到未关闭的连接避免了系统崩溃。