当前位置:

首页 > 编程开发 > SpringBoot整合Druid并开启监控

SpringBoot整合Druid并开启监控

Druid是阿里巴巴开源的高性能数据库连接池,具备强大监控能力。与SpringBoot整合后,通过配置数据源和启用WebStatFilter、StatViewServlet,可实时监控数据库连接状态与SQL执行情况。访问/druid/页面输入凭证即可查看监控信息,有效提升数据访问性能与运维透明度。

Druid 是阿里巴巴开源的一款高性能数据库连接池,它不仅把连接管理这块做得滴水不漏,还自带一套相当强悍的监控和统计能力。当它与 Spring Boot 联手,不仅能大幅提升数据访问性能,更关键的——开发人员可以直接通过内置的监控页面,实时盯住数据库连接的状态、SQL 执行情况这些硬指标。一句话:既快又透明。

1. 引言

互联网应用跑得越来越快,对连接池的要求自然水涨船高。早期那些传统连接池,应付普通场景还行,真要扛高并发、高可用,往往力不从心。Druid 之所以能成为很多团队的首选,靠的就是扎实的性能优化、丰富的监控数据,以及灵活的配置空间。接下来,咱们一步步看看怎么在 Spring Boot 里把它请进来,再顺手把监控功能打开。

2. 添加依赖

第一步,老规矩——先把依赖扔进 pom.xml


    com.alibaba
    druid-spring-boot-3-starter
    1.2.24

如果你用的是 Gradle,那就在 build.gradle 里加上这行:

implementation 'com.alibaba:druid-spring-boot-3-starter:1.2.24'

3. 配置数据源

依赖加好了,接下来就是配置 Druid 数据源。以 application.properties 为例:

# Druid 数据源配置
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=20
spring.datasource.druid.test-on-borrow=true
spring.datasource.druid.validation-query=SELECT 1 FROM DUAL
# 监控页面设置
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.stat-view-servlet.enabled=true
spring.datasource.druid.stat-view-servlet.login-username=druid
spring.datasource.druid.stat-view-servlet.login-password=d1234

当然,YAML 的风格更清爽:

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false
    username: root
    password: 1234
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      test-on-borrow: true
      validation-query: SELECT 1 FROM DUAL
      web-stat-filter:
        enabled: true
      stat-view-servlet:
        enabled: true
        login-username: druid
        login-password: d1234

这里配置了连接池的基本参数——初始大小、最小空闲、最大活动,都是常规操作。特别注意的是,还顺手启用了 Web 统计过滤器和 StatView Servlet,并且设置了监控页面的登录用户名和密码。后面就能用这些凭证进去看全景了。

4. 开启监控功能

光有数据源不够,要真正把 Druid 的监控能力发挥出来,得确保两个关键组件被打开:WebStatFilter(用来收集 SQL 慢查询日志)和 StatViewServlet(提供一个可视化监控页面)。

在配置文件里,这两项已经在上一步启用了。再单独拎出来强调一下:

spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.stat-view-servlet.enabled=true

除此之外,你还可以对监控页面的安全策略做更精细的调整——比如限定哪些 IP 可以访问,或者设置更复杂的登录凭证。这一步按需操作就好。

5. 自定义 Druid 配置(可选)

如果默认配置满足不了你的特殊需求,那就可以自己写一个配置类来接管。下面是一个常见的 Ja va 配置示例:

@Configuration
public class DruidConfig {
    @ConfigurationProperties(prefix = "spring.datasource.druid")
    @Bean
    public DruidDataSource druidDataSource() {
        return new DruidDataSource();
    }

    @Bean
    public ServletRegistrationBean statViewServlet() {
        ServletRegistrationBean bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
        Map params = new HashMap<>();
        params.put("loginUsername", username);
        params.put("loginPassword", password);
        params.put("allow", "localhost");
        params.put("deny", "");
        bean.setInitParameters(params);
        return bean;
    }

    @Bean
    public FilterRegistrationBean webStatFilter() {
        FilterRegistrationBean bean = new FilterRegistrationBean();
        bean.setFilter(new WebStatFilter());
        Map params = new HashMap<>();
        params.put("exclusions", "*.js,*.css,/druid/*");
        bean.setUrlPatterns(Arrays.asList("/*"));
        bean.setInitParameters(params);
        return bean;
    }
}

这套代码做了三件事:创建 Druid 数据源、注册 StatViewServlet(并设置登录和黑白名单)、注册 WebStatFilter(并排除静态资源)。这样你就能完全掌控监控页面的访问规则了。

6. 访问监控页面

所有配置搞定后,启动 Spring Boot 应用,然后在浏览器里敲下这个地址:

http://localhost:8080/druid/

输入之前设置的用户名和密码,你就进入了一个信息量极大的监控界面。连接池的实时状态、SQL 执行的统计、慢查询记录……一应俱全。这个页面对于排查性能瓶颈、优化数据库交互来说,简直就是一把瑞士军刀。

SpringBoot整合Druid并开启监控

7. 注意事项

  • 生产环境安全:监控页面暴露了连接池的敏感信息,线上部署时一定要严格限制访问——比如只允许内网 IP 访问,或者加一层反向袋里的身份验证,千万别让任何人随便进。
  • 性能影响:Druid 的监控确实强大,但在超高并发场景下,采集这些数据本身也会消耗一些资源。建议根据实际负载适当调整监控级别,别因为监控拖累了业务。
  • 版本更新:定期检查 Druid 的新版本,及时修复已知漏洞和 bug,保持系统稳定和安全。技术债欠得越早还越轻松。

8. 总结

到这里,一个整合了 Druid 连接池并开启监控功能的 Spring Boot 应用就搭建完成了。这套组合拳既提升了数据库访问效率,又给了开发人员一个直观的监控工具,无论是日常调优还是线上排障,都顺手了许多。希望这篇文章能帮你快速上手,在实际项目中用起来。

本文内容来源于互联网,如有侵权请联系删除。
作者最新文章
编程开发
相关文章 更多
using namespace 使用中遇到的问题怎么解决
using namespace 使用中遇到的问题怎么解决

命名空间的基本概念与常见引入问题在C++等编程语言中,命名空间(namespace)是一种将代码标识符(如变量、函数、类名)封装在特定名称下的机制,其主要目的是避免命名冲突,尤其是在大型项目或使用多个第三方库时。使用“using namespace”指令可以将指定命名空间中的所有名称引入当前作用域,

c语言函数递归 实操经验总结:这些技巧很实用
c语言函数递归 实操经验总结:这些技巧很实用

理解递归的基本原理在C语言中,递归是一种函数调用自身的编程技术。要掌握它,首先需要理解其核心思想:将一个复杂的大问题,分解为一个或几个与原问题相似但规模更小的子问题,直到子问题足够简单,可以直接求解。这个过程通常包含两个关键部分:递归出口和递归体。递归出口定义了问题何时不再继续分解,即最简单、可直接

c语言函数递归 怎么选?常见方案对比分析
c语言函数递归 怎么选?常见方案对比分析

递归函数的基本概念与适用场景在C语言编程中,递归是一种函数调用自身的编程技巧。它并非适用于所有问题,但在处理某些具有自相似结构的问题时,能提供极其清晰和优雅的解决方案。递归的核心思想是将一个大规模问题分解为一个或多个同类型但规模更小的子问题,直到子问题简单到可以直接求解。典型的适用场景包括树形结构的

Objective-C 内存管理入门:从 alloc 到 dealloc 的生命周期详解
Objective-C 内存管理入门:从 alloc 到 dealloc 的生命周期详解

理解内存管理的基石在Objective-C的编程世界中,内存管理是开发者必须掌握的核心技能之一。它直接关系到应用的性能、稳定性与资源利用效率。与一些采用自动垃圾回收机制的语言不同,Objective-C在很长一段时间里,依赖一套基于引用计数的、需要开发者部分介入的管理规则。这套规则的核心思想是明确的

如何正确使用 dealloc 以避免 iOS 应用中的内存泄漏
如何正确使用 dealloc 以避免 iOS 应用中的内存泄漏

理解 dealloc 的角色与时机在 iOS 应用开发中,内存管理是保障应用性能与稳定性的基石。dealloc 方法是 Objective-C 中对象生命周期结束时的关键回调,它标志着对象即将被系统回收内存。正确理解其触发时机至关重要:当一个对象的引用计数降为零时,运行时系统会自动调用该对象的 de

深入理解 Objective-C 中的 dealloc 方法:内存管理核心机制
深入理解 Objective-C 中的 dealloc 方法:内存管理核心机制

内存管理的基石在Objective-C的世界里,内存管理是开发者必须掌握的核心技能之一。作为一门在手动引用计数(MRC)时代诞生的语言,Objective-C要求程序员对对象的生命周期有清晰的认识。dealloc方法正是这一生命周期中至关重要的终点站。它是一个实例方法,当对象的引用计数降为零时,系统

理解 native2ascii:Java 国际化开发中的字符编码工具
理解 native2ascii:Java 国际化开发中的字符编码工具

native2ascii 工具的基本定位在Ja va应用程序的国际化与本地化开发过程中,处理非拉丁字符集是一个常见且关键的环节。Ja va内部使用Unicode字符集来统一表示全球各种语言的文字,但其属性文件(.properties)在历史上要求使用ASCII编码,或者更准确地说,要求非ASCII字

如何使用 native2ascii 转换中文字符为 Unicode 转义序列
如何使用 native2ascii 转换中文字符为 Unicode 转义序列

理解 native2ascii 工具的基本用途在软件开发,特别是涉及国际化处理的场景中,开发者常常需要处理不同编码的文本资源。native2ascii 是 Ja va 开发工具包(JDK)中提供的一个命令行实用程序,其主要功能是将包含本地字符编码(非ASCII字符)的文件,转换为包含 Unicode

Java native2ascii 命令详解:解决属性文件乱码问题
Java native2ascii 命令详解:解决属性文件乱码问题

native2ascii 命令的由来与作用在Ja va开发中,处理国际化资源文件是一个常见需求。资源文件通常以.properties格式存储,用于支持多语言界面。然而,Ja va属性文件默认采用ISO-8859-1字符集编码,这导致了一个直接的问题:当文件中包含非拉丁字符(如中文、日文、韩文等)时,

一个 memwatch 实战案例:定位野指针问题
一个 memwatch 实战案例:定位野指针问题

内存监控工具的价值与挑战在软件开发,尤其是使用C/C++这类手动管理内存的语言时,内存错误是程序员最常遭遇的难题之一。其中,野指针问题因其隐蔽性和破坏性,往往成为最难定位的“幽灵”缺陷。它可能潜伏在代码中,在特定条件下才被触发,导致程序崩溃、数据损坏或难以预测的行为。传统的调试手段,如打印日志或使用

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件
macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

Mac软件 更多
灵活计算器
灵活计算器
macOS/iOS/Android

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师
macOS

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

WINDOWS 更多
Windows 10
Windows 10
Windows

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式
Windows/macOS/Linux

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘
Windows/macOS/iOS/Android

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。