若依(RuoYi)框架 Druid 配置详解

简介: 核心说明:Druid 是阿里巴巴开源的高性能数据库连接池,兼具连接池管理、SQL监控、防SQL注入、日志记录等核心功能,若依(RuoYi)框架(含RuoYi-Vue、RuoYi-Cloud)已默认集成 Druid,核心配置集中在 application-druid.yml 文件,同时需配合 application.yml 进行环境关联,以下是完整配置解析、实操步骤及常见问题,适配若依框架全版本,兼顾入门使用与进阶优化。

 核心说明:Druid 是阿里巴巴开源的高性能数据库连接池,兼具连接池管理、SQL监控、防SQL注入、日志记录等核心功能,若依(RuoYi)框架(含RuoYi-Vue、RuoYi-Cloud)已默认集成 Druid,核心配置集中在 application-druid.yml 文件,同时需配合 application.yml 进行环境关联,以下是完整配置解析、实操步骤及常见问题,适配若依框架全版本,兼顾入门使用与进阶优化。

若依最新源码下载:

https://gitee.com/ruoyieleadmin/ruoyi-ele-admin

一、Druid 配置前置说明(必看)

1. 配置文件位置

若依框架的 Druid 配置采用“主配置+分配置”模式,核心文件路径如下(以若依单体版为例):


  • 主配置文件:src/main/resources/application.yml —— 关联 Druid 分配置,指定环境、数据源类型等基础参数;
  • Druid 核心配置文件:src/main/resources/application-druid.yml —— 存放 Druid 连接池、监控、过滤等全部核心配置,是配置的核心文件。

2. 依赖说明(无需手动导入)

若依框架已默认引入 Druid 相关依赖(含连接池、监控模块),在 pom.xml 中可查看,无需手动添加,核心依赖如下:

<!-- Druid 连接池依赖 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.16</version> <!-- 若依默认版本,可按需升级 -->
</dependency>

image.gif

3. 核心配置逻辑

若依框架通过 DruidConfig 配置类(路径:com.ruoyi.framework.config.DruidConfig)统一管理 Druid 连接池,该类会读取 application-druid.yml 中的配置,初始化 Druid 数据源、监控 servlet、过滤规则等,实现“配置即生效”,无需额外编写代码。

二、核心配置文件完整解析(application-druid.yml)

以下是若依框架默认 application-druid.yml 完整配置,按“数据源基础配置、连接池参数、监控配置、过滤配置”分类解析,标注必配项、可选项及优化建议,所有配置均可直接复制使用并按需修改。

(一)基础数据源配置(必配,核心)

用于配置数据库连接信息,关联数据库类型(MySQL、Oracle等),是 Druid 连接池的基础,若依框架支持主从数据源配置,以下以 MySQL 为例(最常用):

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource  # 固定指定 Druid 数据源类型
    druid:
      # 主数据源配置(若依默认单数据源,主从配置可新增 slave 节点)
      master:
        url: jdbc:mysql://localhost:3306/ruoyi?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
        username: root  # 数据库用户名(替换为自己的数据库账号)
        password: 123456  # 数据库密码(替换为自己的数据库密码)
        driver-class-name: com.mysql.cj.jdbc.Driver  # MySQL 8.0+ 驱动类(5.7版本为 com.mysql.jdbc.Driver)
      # 从数据源配置(可选,主从分离时启用)
      # slave:
      #   url: jdbc:mysql://localhost:3306/ruoyi_slave?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
      #   username: root
      #   password: 123456
      #   driver-class-name: com.mysql.cj.jdbc.Driver

image.gif

关键说明:

  • url 参数:需替换 localhost:3306 为实际数据库地址和端口,ruoyi 为若依框架默认数据库名,若使用 Oracle、SQL Server,需修改 url 格式和 driver-class-name;
  • username/password:必须替换为实际数据库的账号密码,否则无法连接数据库;
  • 主从分离:若需实现主从分离(读写分离),启用 slave 节点配置,若依框架会自动实现“写主库、读从库”的逻辑,无需额外开发。

(二)Druid 连接池核心参数(必配,性能优化关键)

用于配置连接池的连接数量、超时时间、检测规则等,直接影响系统性能,以下是若依默认配置+优化建议,适配不同并发场景:

spring:
  datasource:
    druid:
      # 连接池通用配置(主从数据源共用,也可单独配置到 master/slave 节点)
      initial-size: 5  # 初始化连接数(默认5,建议:低并发5-10,高并发10-20)
      min-idle: 10  # 最小空闲连接数(默认10,确保空闲时仍有连接可用,避免频繁创建连接)
      max-active: 20  # 最大活跃连接数(默认20,核心参数!需根据并发量调整,建议不超过数据库最大连接数)
      max-wait: 60000  # 获取连接的最大等待时间(单位:毫秒,默认60000,超时则抛出异常)
      time-between-eviction-runs-millis: 60000  # 连接检测时间间隔(单位:毫秒,默认60000,定期检测空闲连接)
      min-evictable-idle-time-millis: 300000  # 连接最小空闲时间(单位:毫秒,默认300000,超过则回收)
      validation-query: SELECT 1 FROM DUAL  # 连接有效性检测SQL(MySQL/Oracle通用,无需修改)
      test-while-idle: true  # 空闲时检测连接有效性(建议开启,避免无效连接)
      test-on-borrow: false  # 获取连接时检测(不建议开启,会影响性能)
      test-on-return: false  # 归还连接时检测(不建议开启,会影响性能)
      pool-prepared-statements: true  # 开启预编译语句池(建议开启,提升SQL执行效率)
      max-pool-prepared-statement-per-connection-size: 20  # 每个连接的预编译语句最大数量

image.gif

优化建议(重点):

  • 高并发场景(如多用户同时操作):调整 max-active: 50min-idle: 20,确保足够的活跃连接,避免连接不足导致超时;
  • 低并发场景(如后台管理系统):保持默认配置即可,无需过度调整,避免资源浪费;
  • 连接泄漏排查:若出现“连接耗尽”异常,可开启log-abandoned: true(添加到上述配置中),打印连接泄漏日志,定位问题代码。

(三)Druid 监控配置(推荐配置,便于运维)

Druid 自带监控面板,可实时查看连接池状态、SQL执行情况、慢SQL等,若依框架已默认配置监控,只需启用并调整访问权限即可,配置如下:

spring:
  datasource:
    druid:
      # 监控配置
      stat-view-servlet:
        enabled: true  # 启用监控面板(必设为true,否则无法访问)
        url-pattern: /druid/*  # 监控面板访问路径(默认/druid/*,可自定义)
        login-username: admin  # 监控面板登录用户名(自定义,建议修改,避免默认账号泄露)
        login-password: admin  # 监控面板登录密码(自定义,建议修改)
        reset-enable: false  # 是否允许重置监控数据(默认false,不建议开启)
        # 监控面板访问白名单(允许访问的IP,多个用逗号分隔,*表示允许所有IP)
        allow: 127.0.0.1,192.168.1.0/24
        # 监控面板访问黑名单(禁止访问的IP,优先级高于白名单)
        deny: 192.168.1.100
      # 监控过滤配置(采集SQL执行信息)
      web-stat-filter:
        enabled: true  # 启用web监控过滤
        url-pattern: /*  # 监控所有请求
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"  # 排除静态资源和监控自身路径

image.gif

监控面板使用方法:

  1. 启动若依项目,访问地址:http://localhost:8080/druid/index.html(端口需替换为项目实际端口);
  2. 输入配置的 login-username 和 login-password 登录,即可查看核心监控数据:
  1. 数据源:查看连接池的初始化、空闲、活跃连接数,以及连接创建/销毁情况;
  2. SQL监控:查看所有执行的SQL语句、执行时间、行数,可筛选慢SQL(默认执行时间>1000ms);
  3. Web应用:查看请求路径、访问次数、耗时等;
  4. 防御SQL注入:查看被拦截的SQL注入请求,Druid 会自动拦截常见的SQL注入语句。

注意:生产环境中,建议修改监控面板的用户名密码,并限制访问IP(避免外部访问),提升安全性。

(四)过滤配置(可选,安全+性能优化)

Druid 提供多种过滤器,用于防SQL注入、日志记录、编码处理等,若依框架默认启用核心过滤器,配置如下:

spring:
  datasource:
    druid:
      filters: stat,wall,log4j2  # 启用的过滤器(stat:监控统计,wall:防SQL注入,log4j2:日志记录)
      # 过滤器详细配置(可选,按需调整)
      filter:
        stat:
          slow-sql-millis: 1000  # 慢SQL阈值(单位:毫秒,默认1000,超过则记录日志)
          log-slow-sql: true  # 记录慢SQL日志(建议开启,便于排查性能问题)
        wall:
          enabled: true  # 启用防SQL注入(必开启,提升系统安全性)
          config:
            multi-statement-allow: false  # 禁止多语句执行(防止SQL注入批量操作)
            none-base-statement-allow: false  # 禁止非基础语句执行

image.gif

关键说明:

  • filters 配置:多个过滤器用逗号分隔,stat 和 wall 是必配的,log4j2 需确保项目引入 log4j2 依赖(若依默认引入);
  • wall 过滤器:核心用于防SQL注入,禁止多语句执行、非基础语句执行,避免恶意SQL攻击;
  • 慢SQL配置:通过 slow-sql-millis 定义慢SQL,开启 log-slow-sql 后,慢SQL会记录到日志中,便于定位性能瓶颈。

三、application.yml 关联配置(必配)

需在 application.yml 中指定启用 Druid 配置,关联 application-druid.yml,核心配置如下(若依默认已配置,无需修改,仅作说明):

spring:
  # 环境配置(dev/test/prod),需确保与 application-druid.yml 环境一致
  profiles:
    active: dev  # 启用开发环境,对应 application-druid.yml 中的环境配置
  # 数据源基础关联(若依框架会自动读取 application-druid.yml 中的 Druid 配置)
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource  # 与 application-druid.yml 中保持一致

image.gif

说明:若需区分开发、测试、生产环境,可创建 application-druid-dev.ymlapplication-druid-prod.yml,分别配置不同环境的数据库信息和连接池参数,通过spring.profiles.active 切换环境。

四、常见问题及解决方案(重点)

1. 数据库连接失败(最常见)

  • 报错信息:Could not get JDBC Connection; nested exception is com.alibaba.druid.pool.DruidDataSource$CreateConnectionException: create connection SQLException
  • 解决方案:
  • 检查 application-druid.yml 中 url、username、password 是否正确,数据库地址和端口是否可达;
  • 检查数据库服务是否启动,是否允许当前IP访问(如MySQL的防火墙、权限设置);
  • 检查 driver-class-name 是否与数据库版本匹配(MySQL 8.0+ 需用 com.mysql.cj.jdbc.Driver)。

2. 监控面板无法访问(404/403)

  • 报错信息:404(路径错误)、403(权限拒绝);
  • 解决方案:
  • 检查 stat-view-servlet.enabled 是否设为 true;
  • 检查访问路径是否正确(默认 /druid/index.html),若修改了 url-pattern,需对应调整访问路径;
  • 403 错误:检查 allow/deny 配置,确保当前访问IP在白名单中,或设置 allow: "*"(生产环境不建议);
  • 若依框架开启了 Shiro 权限控制,需在 Shiro 配置中放行 /druid/** 路径,避免被拦截。

3. 连接池耗尽(超时)

  • 报错信息:wait millis 60000, active 20, maxActive 20(连接数达到最大值);
  • 解决方案:
  • 提升 max-active 参数(建议不超过数据库最大连接数,MySQL默认最大连接数为151);
  • 检查代码中是否存在连接泄漏(如未关闭 Connection、事务未提交),开启 log-abandoned: true 排查泄漏代码;
  • 优化SQL执行效率,减少慢SQL,避免连接长时间被占用;
  • 启用连接池预热:在 DruidConfig 中添加预热代码,提前初始化连接,避免高峰期连接不足。

4. 慢SQL过多,系统性能卡顿

  • 现象:系统响应慢,监控面板中慢SQL数量多;
  • 解决方案:
  • 通过 Druid 监控面板定位慢SQL(SQL监控页,按执行时间排序);
  • 使用 EXPLAIN 分析慢SQL执行计划,优化查询逻辑(如添加索引、避免全表扫描、简化JOIN操作);
  • 调整 slow-sql-millis 阈值,区分正常慢SQL和异常慢SQL,重点优化异常慢SQL;
  • 开启预编译语句池(pool-prepared-statements: true),提升SQL执行效率。

五、进阶优化建议(生产环境必备)

  1. 主从分离:高并发场景下,配置主从数据源(master写、slave读),减少主库压力,若依框架已支持,只需在 application-druid.yml 中配置 slave 节点即可;
  2. 连接池监控告警:结合监控面板数据,设置告警阈值(如 activeCount 持续接近 maxActive),及时发现性能瓶颈;
  3. 定期巡检:每周查看 Druid 监控面板,排查慢SQL、连接泄漏等问题,建立性能基线,便于及时发现异常;
  4. 版本升级:定期升级 Druid 版本(若依默认版本可升级至最新稳定版),修复已知bug,提升性能和安全性;
  5. 密码加密:生产环境中,数据库密码不建议明文存储,可使用 Druid 提供的密码加密工具,加密后配置到 application-druid.yml 中,提升安全性。

六、总结

若依框架的 Druid 配置核心是 application-druid.yml,重点关注“基础数据源配置、连接池参数、监控配置”三大模块,无需额外开发,配置完成后即可生效。入门阶段,可直接使用若依默认配置,替换数据库账号密码即可;生产环境中,需根据并发量调整连接池参数、优化监控配置、开启安全防护,确保系统稳定高效运行。

补充:若使用若依微服务版(RuoYi-Cloud),Druid 配置逻辑与单体版一致,核心配置文件位于 gateway 或各业务模块的 application-druid.yml 中,配置方式完全相同。

若依最新源码下载:

https://gitee.com/ruoyieleadmin/ruoyi-ele-admin

相关文章
|
前端开发
若依框架---如何使用多数据源?前端table中如何显示图片?
若依框架---如何使用多数据源?前端table中如何显示图片?
943 2
|
20天前
|
安全 Java API
将若依(RuoYi)框架从适配 Spring Boot 2 的版本升级到 Spring Boot 3
将若依(RuoYi)框架从适配 Spring Boot 2 的版本升级到 Spring Boot 3,这是一个涉及依赖、配置、API 兼容等多方面的系统性升级工作。
256 5
|
20天前
|
XML Java 应用服务中间件
一步到位!若依框架升级 Tomcat 最新版完整教程
若依(RuoYi)框架升级 Tomcat 到最新版本的完整流程,我会从升级前提、核心步骤、版本适配、避坑指南四个维度拆解,覆盖单体版(RuoYi-Vue)和微服务版(RuoYi-Cloud),确保升级后系统稳定运行
322 3
|
3天前
|
弹性计算 运维 监控
阿里云2核2G配置38元和99元特价云服务器测评:实例性能、适用场景解析
2026年阿里云推出特价云服务器,其中38元/年轻量应用服务器和99元/年云服务器ECS经济型e实例受大量个人开发者、初创企业及学生关注。38元轻量服务器部署简易、运维简化、带宽弹性大,适合个人博客、小微应用测试等场景;99元ECS经济型e实例性能基础、长期成本稳定,适合小型企业官网、开发测试等场景。此外,还有199元/年的通用算力型u1实例可供选择。用户应理性评估自身业务需求,做出明智选择。
|
19天前
|
存储 NoSQL 前端开发
告别踩坑!若依图片验证码实现与改造指南
若依(RuoYi)框架中图片验证码的完整实现逻辑、核心代码和定制化方法,我会从实现原理、核心代码拆解、关键配置、定制化改造四个维度讲解,覆盖验证码生成、存储、校验全流程,让你既能理解原理,也能按需修改验证码样式 / 规则。
159 10
|
1月前
|
机器学习/深度学习 人工智能 编解码
大模型应用:CLIP 模型全维度解析:理解理论基础强化基础范例.16
CLIP是OpenAI提出的跨模态模型,通过对比学习将图像与文本映射至统一语义空间,实现零样本图文对齐。无需微调即可完成图像分类、图文检索等任务,显著降低标注成本,成为多模态AI的核心基础。
1026 21
|
21天前
|
人工智能 自然语言处理 程序员
OpenClaw 爆红内幕:Peter 首谈 Meta / OpenAI 争夺战,Agent 自修改代码意味着什么?
2026年初,Lex Fridman对话OpenClaw创始人Peter Steinberger,引爆技术圈。3小时深度对谈直击AI智能体本质:自执行、自修改、目标驱动。探讨其对软件工程、App生态与程序员角色的范式重构——编程未消失,而是升维至系统建模与行为治理。
|
前端开发 NoSQL Java
【Java若依框架】RuoYi-Vue的前端和后端配置步骤和启动步骤
本文介绍了如何配置和启动基于Java的若依(RuoYi)项目,涵盖后端和前端的详细步骤。首先,准备Redis、MySQL以及IDE(如Idea和VS)。接着,通过GitHub获取代码并导入到IDE中,执行必要的SQL文件和配置数据库密码。然后,启动Redis并进行相关配置。最后,按照前端配置步骤克隆前端代码库,打开终端执行命令完成前端配置。整个过程详细记录了每一步的操作,帮助开发者顺利部署若依项目。 如果你觉得有帮助,请点赞、关注和收藏,这将是我持续分享的动力!
7539 4
|
SQL 前端开发 NoSQL
【若依】前后端分离版快速上手
【若依】前后端分离版快速上手
1726 1

热门文章

最新文章