SpringBoot+Druid并开启监控页面

介绍

  Druid 是一个开源的数据库连接池项目,由阿里巴巴集团开发并贡献给开源社区。它在Java领域中以其高性能、强大功能和易用性著称,是Java应用中广泛使用的数据库连接池组件之一。
Druid 的主要特点包括:
  高性能与低延迟: Druid 实现了高效的数据库连接管理,支持快速获取和释放数据库连接,从而提升系统性能。
  监控与统计:内建强大的监控功能,能够实时统计SQL执行情况、连接使用状况等信息,方便开发者优化SQL语句和数据库配置,并且可以与各种监控系统集成。
  扩展性:支持SQL解析与拦截,允许自定义插件来增强功能,比如SQL黑名单、白名单过滤,防止SQL注入攻击,以及慢查询日志记录等。
  资源控制:提供了完善的连接池配置选项,如连接数限制、超时时间设置、空闲连接检测与回收机制等,有助于更好地管理和控制数据库资源。
  标准接口实现:Druid 实现了JDBC的标准接口 javax.sql.DataSource,因此可以在任何兼容JDBC的应用程序中轻松替换传统的数据库连接方式。
  并发与线程安全:设计上充分考虑了高并发环境下的性能与稳定性,保证多线程环境下数据库连接的安全使用。
尽管在实际测试中,其他如HikariCP等连接池在某些场景下可能表现更优,但 Druid 由于其全面的功能集和良好的社区支持,在生产环境中仍被广泛应用。
  我记得Springboot2.0以上版本默认集成的是Hikari。Druid已经被阿里弃用了。

为什么写?

  因为网上资料一大把,但是我用了几个发现并不能打开druid的监控页面,而且很多一大串配置根本没有生效,或者说根本就不是这样的。(当然我也没完全理解到全部内容)

1、引入POM

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

2、yaml文件配置

server:
  port: 8099

spring:
  datasource:
    druid:
      url: 数据库连接地址
      username: 数据库账号
      password: 数据库密码
      driver-class-name: com.mysql.cj.jdbc.Driver
      # 初始化物理链接的个数
      initial-size: 5
      # 最大连接池数量
      max-active: 30
      # 最小 连接池数量
      min-idle: 5
      # 获取连接时最大等待时间,单位毫秒 timeout链接超时
      max-wait: 60000
      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒  检测非核心链接的时间
      #既作为检测的间隔时间又作为testWhileIdel执行的依据
      time-between-eviction-runs-millis: 60000
      # 连接保持空闲而不被驱逐的最小时间
      min-evictable-idle-time-millis: 30000
      # 用来检测连接是否有效的sql,要求是一个查询语句  8小时问题 8个小时没跟mysql通信mysql会主动关闭该链接
      validation-query: SELECT 1 FROM DUAL
      # 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,
      # 如果空闲时间大于min-evictable-idle-time-millis,执行validationQuery检测连接是否有效。
      test-while-idle: true
      # 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
      test-on-borrow: false
      # 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
      test-on-return: false
      # 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,
      # 比如说oracle。在mysql下建议关闭。不是mysql端,链接端,select * from student 查询缓存
      pool-prepared-statements: true
      # 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。
      max-pool-prepared-statement-per-connection-size: 50
      #调优相关:基本上任何一个项目的性能瓶颈 1.io 2.cpu计算量
      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计
      filters: stat,wall
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录  慢查询:增删改查
      connection-properties: druid.stat.mergeSql=true;
      filter:
        stat:
          slow-sql-millis: 1
      # 合并多个DruidDataSource的监控数据
      use-global-data-source-stat: true
#      # druid连接池监控
#      stat-View-Servlet:
#        login-username: admin
#        login-password: 1101165230
      # 排除一些静态资源,以提高效率
      web-stat-filter:
        exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"

3、创建配置类

/**
 * @author by Guoshun
 * @version 1.0.0
 * @description druid
 * @date 2024/2/4 17:15
 */
@Configuration//放入容器中
public class DruidConfig {
// 
//    @Bean
//    //绑定配置文件前缀为spring.datasource
//    @ConfigurationProperties(prefix = "spring.datasource.druid")
//    public DataSource druidDataSource(){
//        return new DruidDataSource();
//    }
    /**
     * 返回后台监控servlet
     */
    @Bean
    public ServletRegistrationBean monitor(){
        //请求
        ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(), "/druid/*");
        //后台需要用户登录,账号密码配置
        HashMap<String, String> initParameters = new HashMap<>();
        //增加配置
        //登录key是固定的loginUsername loginPassword
        //TODO 这里改成你需要的用户名和密码
        initParameters.put("loginUsername","admin");
        initParameters.put("loginPassword","1101165230");
        //访问白名单
//        initParameters.put("allow","ip地址");
        bean.setInitParameters(initParameters);//设置初始化参数
        return bean;
    }

    /**
     * filter
     * @return
     */
    @Bean
    public FilterRegistrationBean webStatFilter(){
        FilterRegistrationBean<Filter> filterBean = new FilterRegistrationBean<>();
        filterBean.setFilter(new WebStatFilter());
        //可以过滤那些请求
        Map<String, String> initParameters = new HashMap<>();
        //不统计这些东西
        initParameters.put("exclusions","*.js,*.css,/druid/*");
        filterBean.setInitParameters(initParameters);
        return filterBean;
    }
}

启动项目输入地址:http://ip:port/druid/login.html

登录界面

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CRM的线索管理功能是什么?如何帮助企业实现业绩增长?

随着“以客户为中心”观念的逐渐普及&#xff0c;销售团队的客户比过去更复杂&#xff0c;交易周期更久&#xff0c;竞争也更激烈。假如没有明确的销售计划&#xff0c;团队可能陷入混乱&#xff0c;最后导致客户&公司之间的负面结果。在这种情况下&#xff0c;人工智能驱动…

小白Linux学习笔记--进程管理

进程管理 文章目录 进程管理进程pstree 命令静态查看进程信息pspgrep 动态查看进程信息top 终端提示符不显示停止进程killallpkillxkill进程优先级指定优先级调整优先级 前后台作业进程管理课后作业 进程 进程&#xff1a; 运行在内存中程序实例 , 进程是程序运行的一种状态 , …

EasyExcel分页上传数据

EasyExcel分页上传数据 一、实例 controller上传入口 PostMapping("/upload")ResponseBodyLog(title "导入工单", businessType BusinessType.IMPORT)public AjaxResult uploadFile(HttpServletRequest request, MultipartFile files) throws Exceptio…

【cmu15445c++入门】(6)c++的迭代器

一、迭代器 C 迭代器是指向容器内元素的对象。它们可用于循环访问该容器的对象。我们知道迭代器的一个示例是指针。指针可用于循环访问 C 样式数组. 二、代码 自己实现一个迭代器 // C iterators are objects that point to an element inside a container. // They can be…

*s是什么意思

&s是地址&#xff0c;*是指针&#xff0c;*&s是指指向&s地址的指针&#xff1b; j *&s 就是 j s的意思。 例如&#xff1a;readRawData( (char *)& rowCount, sizeof(qint16)); //读取文本流中的行数到rowCount、列数到colCount qint16 rowCount, col…

BVH动画绑骨蒙皮并在Unity上展示

文章目录 Blender绑定骨骼Blender蒙皮Blender中导入bvh文件将FBX导入Unity Blender绑定骨骼 先左上角红框进入model模式&#xff0c;选中要绑定的模型&#xff0c;然后进入Edit模式把骨骼和关节对齐。 &#xff08;选中骨骼&#xff0c;G移动&#xff0c;R旋转&#xff09; 为…

如何进行游戏服务器的负载均衡和扩展性设计?

​在进行游戏服务器的负载均衡和扩展性设计时&#xff0c;需要考虑多个方面&#xff0c;以确保服务器的稳定性和可扩展性。以下是一些关键的步骤和考虑因素&#xff1a; 负载均衡的需求分析 在进行负载均衡设计之前&#xff0c;需要深入了解游戏服务器的负载特性和需求。这包括…

牛客“迎新春,过大年”多校程序设计竞赛A题

题目描述&#xff1a; 这里有个小trick 当时也看到数据范围的问题了 n 是 1 e 6 ∑ i 1 n a [ i ] < 5 e 7 n是1e6 \quad \sum_{i1}^na[i]<5e7 n是1e6∑i1n​a[i]<5e7 我们考虑不同的数 1 2 . . . k − 1 k 1 \quad 2 \quad ... k-1 \quad k 12...k−1k s u m …

ChatGPT论文指南|ChatGPT论文写作过程中6个润色与查重提示词

论文完成初稿之后&#xff0c;一般情况下&#xff0c;宝子们还需要找专家给我们提出评审意见。找专家评审其实并不容易&#xff0c;即使对老师来说&#xff0c;找人评审论文也是一件苦活。我们这个时候可以通过文字提示让 ChatGPT充当我们的评审专家&#xff0c;为论文提出问题…

车位检测,YOLOV8,OPENCV调用

车位检测YOLOV8NANO,opencv调用 车位检测&#xff0c;YOLOV8NANO&#xff0c;训练得到PT模型&#xff0c;然后转换成ONNX&#xff0c;OPENCV的DNN调用&#xff0c;支持C,PYTHON,ANDROID

macbookpro和macbookair的区别?cleanmymac 怎么清理mac空间

苹果mac air和pro区别有&#xff1a;1、air采用了轻薄的设计&#xff0c;重量相对较轻&#xff0c;便于携带&#xff0c;而pro更加注重性能&#xff0c;所以比较重&#xff1b;2、air通常搭载较低功耗的处理器内存和存储容量相对较小&#xff0c;而pro配备了更强大的处理器、更…

HarmonyOS 鸿蒙应用开发(九、还是蓝海,如何贡献第三方库)

快来共享第三方库吧&#xff0c;不但可以通过分享自己的成果&#xff0c;可以获得来自全球开发者的技术反馈和建议&#xff0c;提升自身技术能力&#xff0c;还有助于提高个人或团队在开源社区中的知名度和影响力。在流量时代和粉丝经济时代&#xff0c;获得曝光度和流量密码。…

HarmonyOS鸿蒙ArkTS证件照生成模板(适合二次开发,全套源码版)

预览效果 部分代码 开发语言 HarmonyOS 鸿蒙 ArkTS语言 &#xff08;Stage模型&#xff09; 备注 一键生成&#xff0c;自带证件照数集&#xff0c; 为开发者带来二次开发和学习体验&#xff0c; 在这祝福开发者们使用愉快。 使用方法 下载后通过DevEco Studio开发工…

腾讯云游戏服务器配置有哪些?

2024年更新腾讯云游戏联机服务器配置价格表&#xff0c;可用于搭建幻兽帕鲁、雾锁王国等游戏服务器&#xff0c;游戏服务器配置可选4核16G12M、8核32G22M、4核32G10M、16核64G35M、4核16G14M等配置&#xff0c;可以选择轻量应用服务器和云服务器CVM内存型MA3或标准型SA2实例&am…

软考21-上午题-数组、矩阵

数组&#xff1a;一组地址连续的空间。 数组是定长线性表在维数上的扩展&#xff0c;即&#xff0c;线性表中的元素又是一个线性表。 一、数组 数组的特点&#xff1a; 数组数目固定&#xff0c;一旦定义了数组结构&#xff0c;不再有元素个数的增减变化。因此&#xff0c;数…

寒假作业-day4

1>请编程实现哈希表的创建存储数组{12,24,234,234,23,234,23}&#xff0c;输入key查找的值&#xff0c;实现查找功能。 代码&#xff1a; #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h> typedef int datatype; type…

解决Python xlwings报错AttributeError ‘NoneType‘ object has no attribute apps

一、问题背景 今天&#xff0c;遇到了一个问题&#xff1a;以前调试好的python使用xlwings操作wps表格的脚本突然不能运行了&#xff0c;遇到了很多莫名问题&#xff0c;下面记录分享下&#xff1a; 开始报错如下&#xff1a; D:\PycharmProjects\tiku\venv\Scripts\python.e…

【制作100个unity游戏之23】实现类似七日杀、森林一样的生存游戏11(附项目源码)

本节最终效果演示 文章目录 本节最终效果演示系列目录前言选中效果 快捷栏显示对应的手臂工具源码完结 系列目录 前言 欢迎来到【制作100个Unity游戏】系列&#xff01;本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第23篇中&#xff0c;我们将探索如何制作…

深度学习缝模块怎么描述创新点?(附写作模板+涨点论文)

深度学习缝了别的模块怎么描述创新点、怎么讲故事写成一篇优质论文&#xff1f; 简单框架&#xff1a;描述自己这个领域&#xff0c;该领域出现了什么问题&#xff0c;你用了什么方法解决&#xff0c;你的方法有了多大的性能提升。 其中&#xff0c;重点讲清楚这两点&#xf…

【Qt Design】界面介绍

文章目录 前言Widget Box&#xff08;工具箱&#xff09;对象查看器Qt Design属性编译器sizePolicy内容 信号/槽编辑器资源浏览器ui文件 前言 Widget Box&#xff08;工具箱&#xff09; 提供很多控件 对象查看器 对象查看区域&#xff0c;可以查看主窗口放置对象的列表 …