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: 8099spring: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*/@Beanpublic 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*/@Beanpublic 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.hqwc.cn/news/455805.html

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

相关文章

tlias智能学习辅助系统-增删改查+参数传递

本篇实现黑马tlias智能学习辅助系统中的部门以及员工管理&#xff0c;主要完成增删改查操作以及一些细节问题&#xff0c;后面会进一步总结登录校验、异常处理以及AOP的内容。 目录 一、环境搭建&#xff1a; 二、部门管理&#xff1a; 1、查询所有部门&#xff1a; contr…

Windows11安装运行Linux(Ubuntu)

一、安装windows支持 输入windows打开界面 选择虚拟机监控程序平台、适用于linux的子系统、虚拟机平台 在 Windows 系统中&#xff0c;"虚拟机平台"和"虚拟机监控程序平台"是两个与虚拟化相关的功能&#xff0c;但它们各自有着不同的作用和用途。 虚拟机…

thinkphp6入门(17)-- 网站开发中session、cache、cookie的区别

Session&#xff08;会话&#xff09;: 定义&#xff1a; Session是一种用于在服务器端存储用户信息的机制&#xff0c;以跟踪用户的状态。 数据存储位置&#xff1a; 存储在服务器端&#xff0c;可以存在于内存、数据库或文件系统中。 生命周期&#xff1a; 存在于用户访问应…

html5 audio video

DOMException: play() failed because the user didn‘t interact with the document first.-CSDN博客 不可用&#xff1a; 可用&#xff1a; Google Chrome Close AutoUpdate-CSDN博客

R语言阈值效应函数cut.tab2.0版发布(支持线性回归、逻辑回归、cox回归,自定义拐点)

阈值效应和饱和效应是剂量-反应关系中常见的两种现象。阈值效应是指当某种物质的剂量达到一定高度时&#xff0c;才会对生物体产生影响&#xff0c;而低于这个剂量则不会产生影响。饱和效应是指当某种物质的剂量达到一定高度后&#xff0c;其影响不再随剂量的增加而增加&#x…

优思学院|杰克·韦尔奇谈领导的角色是什么?

杰克韦尔奇作为通用电气公司前任董事长及首席执行官的职业轨迹极为辉煌。在他的领导下&#xff0c;通用电气在20年的时间里市值飙升&#xff0c;从130亿美元跃升至高达4,800亿美元&#xff0c;使其成为世界上市值最高的公司之一。他一生获得了无数荣誉&#xff0c;被誉为“世纪…

【tensorflow 版本 keras版本】

#. 安装tensorflow and keras&#xff0c; 总是遇到版本无法匹配的问题。 安装之前先查表 https://master--floydhub-docs.netlify.app/guides/environments/ 1.先确定你的python version 2.再根据下面表&#xff0c;确定安装的tesorflow, keras

WiFi 6 和WiFi 6e 的核心要点

目录 WiFi 6 是什么&#xff1f; WiFi 6/6e 的主要feature功能&#xff1a; 80Mhz and 160Mhz channel 1K QAM WiFi6 支持2.4G band OFDMA&#xff1a;Orthogonal frequency division multiple access OFDMA先把频段分为&#xff1a;Resource Units (RUs) Subcarriers …

计算机毕业设计 基于SpringBoot的城市垃圾分类管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

Gateway API 实践之(九)FSM Gateway 的双向 TLS

FSM Gateway 流量管理策略系列&#xff1a; 故障注入黑白名单访问控制限速重试会话保持健康检查负载均衡算法TLS 上游双向 TLS 网关开启 mTLS&#xff08;双向 TLS 验证&#xff09;的功能是一种高级安全措施&#xff0c;它不仅要求服务器向客户端证明其身份&#xff0c;同样要…

跟着pink老师前端入门教程-day19

一、移动WEB开发之流式布局 1、 移动端基础 1.1 浏览器现状 PC端常见浏览器&#xff1a;360浏览器、谷歌浏览器、火狐浏览器、QQ浏览器、百度浏览器、搜狗浏览器、IE浏览器。 移动端常见浏览器&#xff1a;UC浏览器&#xff0c;QQ浏览器&#xff0c;欧朋浏览器&#xff0…

Linux中有名管道和无名管道

无名管道基础 进程间通信介绍 常用通信方式 无名管道&#xff08;pipe&#xff09; 有名管道 &#xff08;fifo&#xff09; 信号&#xff08;signal&#xff09; 共享内存(mmap) 套接字&#xff08;socket&#xff09;过时的IPC通信方式 System V IPC 共享内存&#xff08;sh…