SpringBoot项目集成Druid

文章目录

  • 一、前言
  • 二、Druid相关内容
    • 1、Druid简介
      • 1.1数据库连接池
    • 2、项目集成Druid
      • 2.1、环境准备
      • 2.2、依赖准备
      • 2.3、编写配置文件
      • 2.4、测试访问
    • 3、功能介绍
      • 3.1、查看数据源
      • 3.2、SQL监控
      • 3.3、URI监控
  • 三、总结提升

一、前言

本文将介绍Druid的相关内容以及项目如何集成Druid,请多多指教。

二、Druid相关内容

1、Druid简介

Druid是阿里开源的一个数据库连接池的解决方案。它本身还自带一个监控平台,可以查看时时产生的sql、uri等监控数据,可以排查慢sql、慢请求,方便对sql和项目代码进行调优。

1.1数据库连接池

数据库连接池是一种用于管理和复用数据库连接的技术。在应用程序与数据库之间建立连接是一项开销较大的操作,而连接池的目标是通过预先建立一组数据库连接,然后在应用程序需要时分配和复用这些连接,以减少连接建立和断开的开销,提高数据库访问的效率和性能。
在这里插入图片描述

2、项目集成Druid

2.1、环境准备

父项目是一个springboot工程

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.12.RELEASE</version><relativePath/> <!-- lookup parent from repository -->
</parent>
  • MySQL版本:5.7
  • springboot版本:2.3.12.RELEASE

2.2、依赖准备

引入Druid的依赖:

<!--druid依赖-->
<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version>
</dependency>

引入log4j

<!-- 引入log4j -->
<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version>
</dependency>

2.3、编写配置文件

spring:application:name: user-demodatasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/mengjieusername: rootpassword: 123456type: com.alibaba.druid.pool.DruidDataSource#druid数据源配置druid:# 初始化连接池大小initialSize: 5# 最小连接数minIdle: 5# 最大连接数maxActive: 40# 获取连接时的最大等待时间maxWait: 60000#间隔多长时间进行一次检测;timeBetweenEvictionRunsMillis: 60000#配置一个最小的生存对象的空闲时间minEvictableIdleTimeMillis: 300000validationQuery: SELECT 1testWhileIdle: true#申请连接时执行validationQuery检测连接是否有效,默认true,开启后会降低性能testOnBorrow: false#归还连接时执行validationQuery检测连接是否有效,默认false,开启后会降低性能testOnReturn: falsepoolPreparedStatements: true#配置监控统计拦截的filters。stat:监控统计、wall:防御sql注入、log4j:日志记录filters: stat,log4jmaxPoolPreparedStatementPerConnectionSize: 20useGlobalDataSourceStat: true#执行时间超过3000毫秒的sql会被标记为慢sqlconnectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=3000#配置过滤器,过滤掉静态文件web-stat-filter:enabled: trueurl-pattern: /*exclusions: /druid/*,*.js,*.css,*.gif,*.jpg,*.bmp,*.png,*.ico#配置可视化控制台页面stat-view-servlet:filter:stat:merge-sql: falseenabled: true#访问德鲁伊监控页面的地址url-pattern: /druid/*#IP白名单 没有配置或者为空 则允许所有访问#allow: xxx.xxx.xxx#IP黑名单 若白名单也存在 则优先使用#deny: ip地址#禁用重置按钮reset-enable: true#登录所用的用户名与密码login-username: adminlogin-password: 123456

2.4、测试访问

访问:http://localhost:9010/druid
在这里插入图片描述
注意:博主这里的context-path为空,如果这里有值的话,那我们就需要在http://localhost:9010/druid端口的后面添加上context-path的值:http://localhost:9010/xxx/druid
在这里插入图片描述
账号和密码都在配置文件中可以进行配置,输入账号密码进行登录,登录成功;
在这里插入图片描述

3、功能介绍

3.1、查看数据源

这里展示了当前项目数据源的全部详细信息;
在这里插入图片描述

3.2、SQL监控

在这里插入图片描述
以下是Druid的SQL监控功能的一些详细信息:

  • SQL查询支持:Druid的SQL监控功能提供了对标准SQL查询的支持,包括SELECT、FROM、WHERE、GROUP BY、ORDER BY等语句。这意味着用户可以使用通用的SQL查询来访问和分析Druid中的数据。

  • SQL解析器:Druid集成了一个SQL解析器,负责将接收到的SQL查询解析成Druid的查询语言,这使得Druid能够理解并执行SQL查询。

  • 优化和执行:Druid的SQL监控功能不仅仅是一个简单的SQL解析器,它还包括了查询优化和执行的步骤,以确保查询在Druid集群上以高效的方式运行。这包括了查询计划的生成、数据片段的选择和并行执行等操作。

3.3、URI监控

druid也提供了自己的URI监控功能,有没有很熟悉,是不是好像在哪见到过,没错,之前介绍Sentinel的时候,sentinel就有URI监控的页面;
在这里插入图片描述

三、总结提升

Druid的SQL监控功能使得用户能够使用标准SQL语法来访问和分析存储在Druid集群中的实时数据,为数据分析提供了更大的灵活性和便利性。这个功能使得Druid成为了一个强大的实时数据存储和分析引擎,适用于各种大数据应用场景。

如果本篇博客对您有一定的帮助,大家记得留言+点赞+收藏哦。

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

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

相关文章

C#,《小白学程序》第十二课:日历的编制,时间DateTime的计算方法与代码

1 文本格式 /// <summary> /// 《小白学程序》第十二课&#xff1a;日历的编制&#xff0c;时间DateTime的计算方法与代码 /// 本课学习时间类型的数据 DateTime 的简单方法&#xff0c;并编制一个月的日历。 /// </summary> /// <param name"sender"…

OpenWrt系统开发笔记

openWrt英文官网&#xff1a; https://openwrt.org/ 中文官网&#xff1a; http://www.openwrt.org.cn/ 一、开发环境及编译 在github上有两个源码使用的比较多   一个是lede,地址为&#xff1a;https://github.com/coolsnowwolf/lede   另一个为OpenWrt的官方源码&#…

笔记 | 排序算法实现(Python)

排序算法 一、选择排序二、合并/归并排序三、快速排序四、计数排序 排序类型时间复杂度选择排序(Selection Sort) O ( n 2 ) O(n^{2} ) O(n2)合并/归并排序&#xff08;Merge Sort&#xff09; O ( n log ⁡ n ) O(n\log n ) O(nlogn)快速排序(Quick Sort)平均情况 O ( n log ⁡…

STM32F4X RTC

STM32F4X RTC 什么是RTCSTM32F4X RTCSTM32F4X RTC框图STM32F4X RTC计数频率STM32F4X RTC日历STM32F4X RTC闹钟 STM32F4X RTC例程 什么是RTC RTC全程叫Real-Time Clock实时时钟&#xff0c;是MCU中一个用来计时的模块。RTC的一个主要作用是用来显示实时时间&#xff0c;就像日常…

利用less实现多主题切换(配合天气现象)

1. 先看效果&#xff1a; 2. 话不多说直接撸吧&#xff1a; 原理&#xff1a;先给body元素添加style&#xff0c;再根据天气现象动态更改style 开撸&#xff1a; 创建src/assets/style/variables.less 使用 XXX:var(–XXX,‘style’) 声明系列变量&#xff0c;之后添加其他变…

单臂路由实验:通过Trunk和子接口实现VLAN互通

文章目录 一、实验背景与目的二、实验拓扑三、实验需求四、实验解法1. PC 配置 IP 地址2. PC3 属于 Vlan10&#xff0c;PC4 属于 Vlan20&#xff0c;配置单臂路由实现 Vlan10 和 Vlan20 三层互通3. 测试在 PC3 上 Ping PC4 &#xff0c;可以 Ping 通 PC4 摘要&#xff1a; 本文…

任意文件读取及漏洞复现

文章目录 渗透测试漏洞原理任意文件读取1. 任意文件读取概述1.1 漏洞成因1.2 漏洞危害1.3 漏洞分类1.4 任意文件读取1.4.1 文件读取1.4.2 任意文件读取1.4.3 权限问题 1.5 任意文件下载1.5.1 一般情况1.5.2 PHP实现1.5.3 任意文件下载 2. 任意文件读取攻防2.1 路径过滤2.1.1 过…

引爆用户参与:消息重弹,让您的推送不再被忽略

在当前各大APP拉新促活成本居高不下的大背景下&#xff0c;如何稳定存量用户、提升用户粘性就显得尤为关键。从促销活动到个性化推荐&#xff0c;从互动通知到功能提醒&#xff0c;消息推送已成为各大APP连接存量用户和目标市场之间的桥梁&#xff0c;通过点击推送&#xff0c;…

springboot初试elasticsearch

引入依赖 elasticsearch的依赖版本与你elasticsearch要一致 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId> </dependency> 索引库的操作 创建索引库 impo…

Visual Studio 2019下使用C++与Python进行混合编程——环境配置与C++调用Python API接口

前言 在vs2019下使用C与Python进行混合编程,在根源上讲&#xff0c;Python 本身就是一个C库&#xff0c;那么这里使用其中最简单的一种方法是把Python的C API来嵌入C项目中&#xff0c;来实现混合编程。当前的环境是&#xff0c;win10,IDE是vs2019,python版本是3.9&#xff0c…

LeetCode 刷题记录——从零开始记录自己一些不会的

1. 最多可以摧毁的敌人城堡数目 题意 思路 两层循环&#xff0c;太low了 用一个变量记录前一个位置 代码 class Solution { public:int captureForts(vector<int>& forts) {int ans 0, pre -1;for (int i 0; i < forts.size(); i) {if (forts[i] 1 || forts…

04、javascript 修改对象中原有的属性值、修改对象中原有属性的名字(两种方式)、添加对象中新属性等的操作

1、修改对象中原有的属性值 其一、代码为&#xff1a; // 想将 obj 中的 flag 值&#xff0c;根据不同的值来变化(即&#xff1a;修改对象中原有的属性值)&#xff1b; let obj {"port": "port_0","desc": "desc_0","flag&quo…

IP应用场景查询API:深入了解网络用户行为的利器

前言 随着数字时代的不断发展&#xff0c;互联网已经成为人们生活的重要组成部分。而随着越来越多的业务和社交活动迁移到在线平台上&#xff0c;了解和理解网络用户行为变得至关重要。为了满足这个需求&#xff0c;IP 应用场景查询 API 崭露头角&#xff0c;成为深入了解网络…

安卓绘制原理概览

绘制原理 Android 程序员都知道 Android 的绘制流程分为 Measure、Layout、Draw 三步骤&#xff0c;其中 Measure 负责测量 View 的大小Layout 负责确定 View 的位置Draw 负责将 View 画在屏幕上 由 ViewRootImpl 实现的 performTraversal 方法是 Measure、layout、draw 的真正…

Linux创建新文件的几种方式

第一种是 vi 文件名&#xff0c;然后进入vi编辑&#xff0c;完了之后保存退出&#xff1b;然后ls看一下&#xff0c;文件有了&#xff1b; 在终端输入 cat > 文件名&#xff0c;这没用过&#xff1b;输入以后回车&#xff0c;不会退出命令&#xff1b;输入一行文字&#xff…

TLA+学习记录1——hello world

0x01 TLA是个好工具 编程人员一个好习惯是凡事都想偷懒&#xff0c;当然是指要科学地偷懒&#xff0c;而不是真的偷懒。一直想找到一种能检验写出的代码&#xff0c;做出的设计是否真的完全正确&#xff0c;而不是靠经验检视、代码Review、反复测试去检验。因为上述方法不管怎…

学习心得07:C#

之前也没有看过C#的书&#xff0c;C#的程序倒是搞了一些。好在项目不大&#xff0c;我又会套路。 C#很象是JAVA。好像就是JAVA出来之后&#xff0c;微软抄的。好东西就要学习&#xff0c;这不丢脸。 我倒是想&#xff0c;有没有办法把JAVA和C#进行映射&#xff0c;然后直接编译…

Unity入门教程||创建项目(上)

一、介绍 目的&#xff1a;通过尝试制作一款使用玩家角色把小球弹飞的简单小游戏&#xff0c;熟悉使用Unity进行游戏开发的基本流程。 软件环境&#xff1a;Unity 2017.3.0f3&#xff0c;Visual Studio 2013 二、创建新项目 1&#xff0c;启动Unity后将出现一个并列显示Pro…

Springboot 实践(14)spring config 配置与运用--手动刷新

前文讲解Spring Cloud zuul 实现了SpringbootAction-One和SpringbootAction-two两个项目的路由切换&#xff0c;正确访问到项目中的资源。这两个项目各自拥有一份application.yml项目配置文件&#xff0c;配置文件中有一部分相同的配置参数&#xff0c;如果涉及到修改&#xf…

【C++】模拟实现二叉搜索树的增删查改功能

个人主页&#xff1a;&#x1f35d;在肯德基吃麻辣烫 我的gitee&#xff1a;C仓库 个人专栏&#xff1a;C专栏 文章目录 一、二叉搜索树的Insert操作&#xff08;非递归&#xff09;分析过程代码求解 二、二叉搜索树的Erase操作&#xff08;非递归&#xff09;分析过程代码求解…