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

相关推荐
Zane19942 分钟前
daemon 线程说没就没?一文讲透 threading 的适用场景与线程安全
后端·python
步行cgn9 分钟前
MyBatis 高级映射与延迟加载完全指南
java·tomcat·mybatis
thefool11226610 分钟前
从中序与后序遍历序列构造二叉树
java
凤山老林13 分钟前
从 RestTemplate 到 HttpClient 5:Spring Boot HTTP 客户端性能调优与连接池治理
spring boot·后端·http
Csvn15 分钟前
📊 SQL 入门 Day 20:锁机制
后端·sql
吴声子夜歌21 分钟前
Java面试题——JVM(二)
java·开发语言·jvm
CRMEB23 分钟前
商城大促活动策划全流程:从定目标到复盘四阶段
java·开发语言·人工智能·ai·开源·php
denglinqings24 分钟前
Java开发从入门到精通所有课程
java·开发语言
星空42 分钟前
maven镜像
java·maven
晚染烟1 小时前
每日八股day27
spring boot