Spring Boot 整合 Druid 并开启监控

文章目录

  • 1. 引言
  • 2. 添加依赖
  • 3. 配置数据源
  • 4. 开启监控功能
  • 5. 自定义 Druid 配置(可选)
  • 6. 访问监控页面
  • 7. 注意事项
  • 8. 总结

Druid 是一个由阿里巴巴开源的高性能数据库连接池,它不仅提供了高效的连接管理功能,还自带了强大的监控和统计特性。将 Druid 与 Spring Boot 结合使用,可以显著提高应用程序的数据访问性能,并且通过内置的监控页面,开发者能够实时监控数据库连接的状态、SQL 执行情况等重要信息。

1. 引言

随着互联网应用的快速发展,对数据库连接池的要求也越来越高。传统的连接池可能无法满足现代应用对于高性能和高可用性的需求。而 Druid 凭借其优秀的性能优化、详细的监控数据以及灵活的配置选项,成为了许多开发者的首选。接下来,我们将一步步展示如何在 Spring Boot 中引入 Druid,并启用它的监控功能。

2. 添加依赖

首先,在你的 pom.xml 文件中添加 Druid 的 Maven 依赖:

<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-3-starter</artifactId><version>1.2.24</version>
</dependency>

如果你使用的是 Gradle 构建工具,则可以在 build.gradle 文件中添加如下内容:

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

3. 配置数据源

接下来,在 application.properties 或 application.yml 文件中配置 Druid 数据源的相关参数。这里以 .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=falseusername: rootpassword: 1234type: com.alibaba.druid.pool.DruidDataSourcedruid:test-on-borrow: truevalidation-query: SELECT 1 FROM DUALweb-stat-filter:enabled: truestat-view-servlet:enabled: truelogin-username: druidlogin-password: d1234

上述配置项包括了连接池的基本参数(如初始大小、最小空闲连接数、最大活动连接数等),同时也启用了 Druid 的 Web 统计过滤器和统计视图 Servlet,并设置了登录用户名和密码用于访问监控页面。

4. 开启监控功能

为了更好地管理和监控 Druid 连接池的工作状态,我们需要开启 Druid 提供的监控功能。这可以通过配置文件中的几个关键属性来实现:

  • WebStatFilter:用于收集 Web 应用程序的 SQL 慢查询日志。
  • StatViewServlet:提供了一个可视化的监控页面,可以查看连接池的各项指标。

确保在 application.properties 或 application.yml 中启用了这两个组件:

# 启用 WebStatFilter 和 StatViewServlet
spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.stat-view-servlet.enabled=true

此外,还可以进一步自定义监控页面的安全策略,比如允许或限制特定 IP 地址访问、设置更多的登录凭证等。

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

如果默认配置不能满足你的需求,你可以创建一个自定义的 Druid 配置类来覆盖默认设置。例如:

@Configuration
public class DruidConfig {@ConfigurationProperties(prefix = "spring.datasource.druid")@Beanpublic DruidDataSource druidDataSource() {return new DruidDataSource();}// 如果需要,可以在这里添加更多配置,如过滤器、拦截器等@Beanpublic ServletRegistrationBean<StatViewServlet> statViewServlet() {ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");Map<String, String> params = new HashMap<>();params.put("loginUsername", username);params.put("loginPassword", password);params.put("allow", "localhost");params.put("deny", "");bean.setInitParameters(params);return bean;}@Beanpublic FilterRegistrationBean<Filter> webStatFilter() {FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<Filter>();bean.setFilter(new WebStatFilter());Map<String, String> params = new HashMap<>();params.put("exclusions", "*.js,*.css,/druid/*");bean.setUrlPatterns(Arrays.asList("/*"));bean.setInitParameters(params);return bean;}
}

6. 访问监控页面

完成上述配置后,启动 Spring Boot 应用程序,然后打开浏览器并访问以下 URL 来查看 Druid 的监控页面:

http://localhost:8080/druid/

使用之前设置的用户名和密码登录后,你将看到一个包含详细连接池信息和 SQL 查询统计的界面。通过这个页面,你可以轻松地监控数据库连接的状态、分析 SQL 性能瓶颈等问题。
在这里插入图片描述

7. 注意事项

  • 生产环境安全:在生产环境中部署时,请务必加强对监控页面的访问控制,避免敏感信息泄露。
  • 性能影响:虽然 Druid 的监控功能非常有用,但在高并发场景下可能会对系统性能产生一定影响。因此,在实际应用中应权衡利弊,合理配置监控级别。
  • 更新维护:定期检查 Druid 版本更新,及时修复已知漏洞和问题,保持系统的稳定性和安全性。

8. 总结

通过以上步骤,我们成功地在 Spring Boot 应用中集成了 Druid 数据库连接池,并开启了其监控功能。这不仅提高了数据库访问的效率,还为开发者提供了宝贵的调试和优化工具。希望这篇文章能够帮助你。

更多配置或使用请参考官方文档:https://github.com/alibaba/druid

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/63469.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用PHP和GD库实现图片切割

利用PHP和GD库实现图片切割的详细步骤如下&#xff1a; 一、检查GD库是否安装 确保服务器上已经安装了PHP和GD库。可以使用phpinfo()函数来检查GD库是否已经安装和启用。 二、加载原始图片 使用PHP提供的imagecreatefromjpeg()、imagecreatefrompng()或imagecreatefromgif(…

第二十四周机器学习笔记:动手深度学习之——统计学习知识

第二十四周周报 摘要Abstract1.监督学习和无监督学习1.1 监督学习&#xff08;Supervised Learning&#xff09;1.2 无监督学习&#xff08;Unsupervised Learning&#xff09; 2.线性回归模型3.K-means聚类算法3.1 K-means算法的具体步骤&#xff1a; 4.决策树4.1 划分选择的目…

云计算vspere 安装过程

1 材料的准备 1 安装虚拟机 vmware workstation 2 安装esxi 主机 3 在esxi 主机上安装windows 2018 dns 服务器 4 在虚拟机上安装windows 2018 服务器 6 安装vcenter 5 登入界面测试 这里讲一下&#xff0c;由于部署vspere 需要在windows 2012 服务器上部…

【青牛科技】应用于音频信号处理系统的D258 是由两个独立的高增益运算放大器组成

概述&#xff1a; D258是由两个独立的高增益运算放大器组成。可以是单电源工作&#xff0c;也可以是双电源工作,电源的电流消耗与电源电压大小无关。应用范围包括变频放大器、DC增益部件和所有常规运算放大电路。 主要特点&#xff1a; ● 可单电源或双电源 工作 ● 在一个封…

HTML旋转爱心(完整代码)

目录 写在前面 完整代码 下载代码 代码分析 系列文章 写在后面 写在前面 HTML语言实现旋转爱心的完整代码。 完整代码 <!DOCTYPE html> <html lang="en"><head><title>Love</title><meta charset="utf-8">&l…

Kafka 数据写入问题

目录标题 分析思路1. **生产者配置问题**&#xff1a;Kafka生产者的配置参数生产者和消费者的处理确定并优化 2. **网络问题**&#xff1a;3. **Kafka 集群配置问题**&#xff1a;unclean.leader.election.enable 4. **Zookeeper 配置问题**&#xff1a;5. **JVM 参数调优**&am…

1.文本方块方法(Spacy Text Splitter 方法)Can‘t find model ‘zh_core_web_sm‘

一、概述 执行如下&#xff1a; def split_spacy(text):import spacynlp spacy.load( "zh_core_web_sm" ) doc nlp(text) for s in doc.sents: print(s) # d:\programdata\anaconda3\envs\python310\lib\site-packages if __name__"__main__":text &q…

redis备份方式

Redis是一个开源的内存数据结构存储系统&#xff0c;常用于数据库、缓存和消息中间件。Redis提供了两种主要的持久化方式&#xff1a;RDB&#xff08;Redis DataBase&#xff09;和AOF&#xff08;Append Only File&#xff09;。 RDB&#xff08;Redis DataBase&#xff09; …

maven高级管理

1. 依赖管理 pom.xml使用标签来进行依赖管理&#xff0c;具体涉及 依赖传递可选依赖排除依赖 依赖是具有传递性 **说明:**A代表自己的项目&#xff1b;B,C,D,E,F,G代表的是项目所依赖的jar包&#xff1b;D1和D2 E1和E2代表是相同jar包的不同版本 (1) A依赖了B和C,B和C有分别…

自建服务器,数据安全有保障

在远程桌面工具的选择上&#xff0c;向日葵和TeamViewer功能强大&#xff0c;但都存在收费昂贵、依赖第三方服务器、数据隐私难以完全掌控等问题。相比之下&#xff0c;RustDesk 凭借开源免费、自建服务的特性脱颖而出&#xff01;用户可以在自己的服务器上部署RustDesk服务端&…

1、SQL语言

分类方式 类别描述 部署方式 嵌入式/单机/双机/集群/分布式/云数据库 业务类型 OLTP数据库/OLAP数据库/流数据库/时序数据库 存储介质 内存数据库/磁盘数据库/SSD数据库/SCM数据库 年代 第一代是单机数据库/第二代是集群数据库/第三代是分布式数据库和云原生数据库/第…

使用docker让项目持续开发和部署

大多人选择开发时在本地&#xff0c;部署时文件都在容器里&#xff0c;如果没有容器&#xff0c;那就本地开发&#xff0c;没有映射文件&#xff0c;如果部署环境到容器了&#xff0c;容器内部启动时设置执行命令&#xff0c;再将映射的文件进行编译&#xff0c;这就直接能实现…

一些常见网络安全术语

1、黑帽 为非法目的进行黑客攻击的人&#xff0c;通常是为了经济利益。他们进入安全网络以销毁&#xff0c;赎回&#xff0c;修改或窃取数据&#xff0c;或使网络无法用于授权用户。这个名字来源于这样一个事实&#xff1a;老式的黑白西部电影中的恶棍很容易被电影观众识别&…

Linux-PWM驱动实验

在裸机篇我们已经学习过了如何使用 I.MX6ULL 的 PWM 外设来实现 LCD 的背光调节&#xff0c;其实在 Linux 的 LCD 驱动实验我们也提到过 I.MX6ULL 的 PWM 背光调节&#xff0c;但是并没有专门的去讲解 PWM 部分&#xff0c;本章我们就来学习一下 Linux 下的 PWM 驱动开发。 PWM…

ChatGPT 最新推出的 Pro 订阅计划,具备哪些能力 ?

OpenAI 最近推出了 ChatGPT Pro&#xff0c;这是一个每月收费 200 美元的高级订阅计划&#xff0c;旨在为用户提供对 OpenAI 最先进模型和功能的高级访问。 以下是 ChatGPT Pro 的主要功能和能力&#xff1a; 高级模型访问&#xff1a; o1 模型&#xff1a;包括 o1 和 o1 Pro…

wordpress网站安装了Linux宝塔面板,限制IP地址访问网站,只能使用域名访问网站

一、Linux服务器安装Linux宝塔面板 这个步骤参考网上其他教程。 二、Linux宝塔面板部署wordpress网站 这个步骤参考网上其他教程&#xff0c;保证网站能够正常访问&#xff0c;并且使用Linux宝塔面板申请并部署了SSL证书&#xff0c;使用https协议默认443端口正常访问。 三…

C#中的模拟服务器与客户端建立连接

创建一个控制台项目&#xff0c;命名为Server&#xff0c;模拟服务器端。在同一个解决方案下&#xff0c;添加新项目&#xff0c;命名为Client&#xff0c;模拟客户端。在服务器端与客户端之间建立TCP连接&#xff0c;并在客户端发送消息&#xff0c;在服务器端输出。 Server项…

LeetCode279. 完全平方数(2024冬季每日一题 27)

给你一个整数 n &#xff0c;返回 和为 n 的完全平方数的最少数量 。 完全平方数 是一个整数&#xff0c;其值等于另一个整数的平方&#xff1b;换句话说&#xff0c;其值等于一个整数自乘的积。例如&#xff0c;1、4、9 和 16 都是完全平方数&#xff0c;而 3 和 11 不是。 …

Docker基础【windows环境】

课程内容来自尚硅谷3小时速通Docker教程 1. Docker简介 Docker 通过 Docker Hub 实现一行命令安装应用&#xff08;镜像&#xff09;【Nginx&#xff0c;Mysql等】&#xff0c;避免繁琐的部署操作。同时通过轻量级&#xff08;相对于虚拟机&#xff09;的容器化的思想&#x…

flinkSql 将流和表的互相转换

流——>表 方式一 方式二 方式一&#xff1a;写sql DataStreamSource<String> source env.socketTextStream("localhost", 8881); // 表名&#xff0c;流&#xff0c;字段名称 tableEnv.createTemporaryView("t_1",source&#xff0c;$("…