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

相关推荐
caishenzhibiao1 小时前
顺势交易矩阵主图 同花顺期货通指标
java·c语言·c#
我命由我123451 小时前
Android 开发 - 广播组件(标准广播、有序广播、静态注册广播、分钟到达广播、网络变更广播...)
android·java·开发语言·网络·java-ee·android studio·android-studio
周航宇JoeZhou1 小时前
JP3-2-1-MyItem项目简介
java·ai·springboot·环境搭建·项目·管理·springai
lemon_sjdk1 小时前
从 ServletRequest 到 Spring 抽象:Web 请求的底层基石与演化
java·前端·spring
明月_清风1 小时前
🕵️ MEV 与链上交易:理解区块链的"暗面"
后端·web3
明月_清风1 小时前
🤖 Web3 + AI 融合:去中心化智能的未来
后端·web3
swipe1 小时前
13|(前端转全栈)支付成功不等于结束:回调、幂等、超时关单和状态竞争
前端·后端·面试
唐青枫2 小时前
Java Reactor Netty 实战详解:从响应式 HTTP 到 TCP 长连接
java·netty
swipe2 小时前
12|(前端转全栈)点击提交订单后,后端如何用事务守住价格、库存和订单?
前端·后端·面试