SpringBoot 整合 Druid 并列出参数清单

1. 整合步骤(基于 Spring Boot 官方 Starter)

第一步:引入 Maven 依赖

XML 复制代码
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.20</version> <!-- 建议使用最新稳定版 -->
</dependency>

第二步:在 application.yml 中配置数据源和连接池参数

bash 复制代码
spring:
  datasource:
    # 基本连接信息(必须)
    url: jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
    driver-class-name: com.mysql.cj.jdbc.Driver
    
    # 指定使用 Druid 数据源(必须)
    type: com.alibaba.druid.pool.DruidDataSource
    
    # Druid 连接池专属参数(核心清单见下文)
    druid:
      # 初始连接数
      initial-size: 5
      # 最小空闲连接数
      min-idle: 5
      # 最大活跃连接数
      max-active: 20
      # 获取连接超时时间(毫秒)
      max-wait: 60000
      # 连接保持空闲而不被回收的最小时间(毫秒)
      time-between-eviction-runs-millis: 60000
      # 连接在池中最小生存时间(毫秒)
      min-evictable-idle-time-millis: 300000
      # 验证连接是否有效的 SQL(MySQL 使用)
      validation-query: SELECT 1 FROM DUAL
      # 验证超时时间(秒)
      validation-query-timeout: 3
      # 申请连接时执行 validation-query 检测
      test-on-borrow: false
      # 归还连接时执行 validation-query 检测
      test-on-return: false
      # 空闲时检测连接有效性(建议开启)
      test-while-idle: true
      
      # 监控统计 + 日志 + 防御 SQL 注入(配置三个插件)
      filters: stat,log4j2,wall
      
      # StatFilter 监控配置
      stat:
        log-slow-sql: true
        slow-sql-millis: 2000
        merge-sql: true
      
      # WallFilter(SQL 防火墙)配置
      wall:
        config:
          delete-where-none-check: true
      
      # 监控页面(Druid Console)访问配置
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*
        login-username: admin
        login-password: admin123
        reset-enable: false
      
      # Web 应用监控(URI 统计)
      web-stat-filter:
        enabled: true
        url-pattern: /*
        exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'

2. Druid 连接池完整核心参数清单

参数名 说明 默认值 推荐值(示例)
initial-size 初始化时创建的连接数 0 5~10
min-idle 最小空闲连接数 0 5~10
max-active 最大活跃连接数(最大并发数) 8 20~100(视业务)
max-wait 获取连接最大等待时间(毫秒),超时抛异常 -1(无限) 60000
time-between-eviction-runs-millis 空闲连接检查/回收的间隔(毫秒) 60000(1分钟) 60000
min-evictable-idle-time-millis 连接最小空闲时间,超过则被回收(毫秒) 1800000(30分钟) 300000(5分钟)
max-evictable-idle-time-millis 连接最大空闲时间,强制回收(毫秒) 25200000(7小时) -
validation-query 验证连接有效性的 SQL(必须支持快速执行) null MySQL: SELECT 1 / Oracle: SELECT 1 FROM DUAL
validation-query-timeout 验证 SQL 执行超时时间(秒) -1 3
test-on-borrow 获取连接时立即执行验证(影响性能) false false
test-on-return 归还连接时执行验证(影响性能) false false
test-while-idle 空闲时检测连接有效性(强烈建议开启 false true
pool-prepared-statements 是否缓存 PreparedStatement(PSCache) false true(开启可提升性能)
max-pool-prepared-statement-per-connection-size 每个连接缓存的 PreparedStatement 上限 -1 20
filters 扩展插件(用逗号分隔):stat(监控), wall(防火墙), log4j2(日志) - stat,wall,log4j2
connection-properties 自定义连接属性,如 config.decrypt=true(密码解密) - -
use-global-data-source-stat 是否开启全局数据源统计 false -

3. 监控页面(Druid Console)访问

启动项目后,访问:

bash 复制代码
http://localhost:你的端口/druid/login.html

使用配置中的 login-username / login-password 登录,可查看 SQL 执行、连接池状态、URI 监控等。


4. 常见问题(避坑点)

  1. filters 配置的插件必须存在类路径 (如 log4j2 需引入 spring-boot-starter-log4j2)。

  2. 如果使用 spring.datasource.druid 前缀,不要同时配置 spring.datasource 下的 hikari 参数,二者会冲突

  3. 生产环境建议开启 test-while-idle + validation-query,保证连接有效性,但不要开启 test-on-borrow 以免影响响应时间。

相关推荐
linweidong35 分钟前
中科闻歌Java面试题及参考答案
java·python·大模型·提示词·ai agent·mcp·rag原理
OpenAnolis小助手42 分钟前
一句话看透 JVM,SysOM 诊断 Skill 新增 Java 应用诊断能力
java·开发语言·jvm·阿里云·操作系统控制台·sysom
ForteScarlet1 小时前
Kotlin 2.4.20 现已发布,新特性多不多?
android·java·开发语言·开源·kotlin·jetbrains
萧瑟余晖1 小时前
Java深入解析篇六十二之安全机制详解
java·开发语言
小刘在重生~1 小时前
Java 常用类|包装类 装箱拆箱、Integer 缓存面试题
java·python·缓存
Orange_sparkle2 小时前
Pi Agent vs LangGraph:从人机交互、企业 RAG 到持久化工作流的完整选型指南
java·网络·人机交互
IT_陈寒2 小时前
React子组件莫名其妙重渲染?你可能漏了这个Hook
前端·人工智能·后端
小兵金林2 小时前
AI 生成代码的思考与实践
后端·ai编程
码事漫谈2 小时前
DeepSeek 明天又降价(涵历史价格对比)
后端
前端精髓2 小时前
NestJS 是什么(对着 Spring Boot 一起学习)
spring boot·后端·学习