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 以免影响响应时间。

相关推荐
软件技术NINI2 分钟前
基于SpringBoot和Vue的新能源汽车销售推荐系统
java·vue.js·spring boot·后端·汽车·毕业设计·毕设
GISer_Jing3 分钟前
Agent相关岗位时收集的各类技术面试题
后端·ai·langchain
量化分析码农25 分钟前
【Python量化波动率实战 06】一键输出风险看板:波动率仪表盘工程化
后端
Flynn Liang32 分钟前
LangChain4j 生产级工程骨架:12 个模块 + Docker 一键启动
java·spring boot·langchain·rag·langchain4j
RuoyiOffice2 小时前
固定资产维修管理:从报修、审批到办结,原资产卡怎么回查?
spring boot·固定资产·ruoyi office·资产维修·维修审批·维修办结·资产履历
噢,我明白了2 小时前
JAVA中的一些基础应用知识点
java·开发语言
招风的黑耳2 小时前
SpringBoot+Vue+MySQL 民宿在线预定平台 完整可运行版(源码+文档)
vue.js·spring boot·mysql
花间相见2 小时前
【计算基础|Redis02】【上手】五大数据类型命令逐条实操
数据库·redis·后端
GISer_Jing2 小时前
AI Agent秋招面试万字通关指南|架构、ReAct、上下文工程、RAG、评测、生产运维全解
后端·ai·langchain
SL_staff2 小时前
私有化低代码不是妥协,而是企业级数字化的自主可控主航道
java