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

相关推荐
摇滚侠7 小时前
《On Java 中文版 基础卷》阅读笔记 对象无处不在 03
java·笔记·python
二十雨辰7 小时前
[学成在线]-01项目背景
java
IT_陈寒7 小时前
Java线程池这破玩意,差点让我周末加班排查到凌晨
前端·人工智能·后端
弈栈录8 小时前
Java AI 应用的异步化与高并发设计
java·后端·架构
落魄实习生8 小时前
Agent Scope Java 2.x 系列【2】 ReActAgent
java·开发语言
艸肅8 小时前
Ubuntu 安装 JDK (含手动安装)
java·ubuntu·jdk
m0_734172429 小时前
Python字典计数怎样处理首次出现的键
java
凤山老林9 小时前
Spring Boot 集成 iText 7 实现动态 PDF 生成与电子签章:合同、报表场景实战
spring boot·后端·pdf·itext7·电子签章
孙启超9 小时前
【AI开发之Rust】第 19 课:UniFFI 导出核心能力
开发语言·后端·rust
卓怡学长9 小时前
w204基于springbo旅行社签证代理服务系统
java·spring boot·spring·intellij-idea