带你了解SpringBoot---开启Durid 监控

文章目录

  • 数据库操作--开启Durid 监控
    • 整合Druid 到Spring-Boot
      • 官方文档
      • 基本介绍
      • Durid 基本使用
        • 代码实现
      • Durid 监控功能-SQL 监控
        • 需求:
        • SQL 监控数据
        • SQL 监控数据-测试页面
      • Durid 监控功能-Web 关联监控
        • 需求:
        • Web 关联监控配置-Web 应用、URI 监控
        • 重启项目
      • Durid 监控功能-SQL 防火墙
        • SQL 防火墙
      • Durid 监控功能-Session 监控
      • Session 监控
      • Druid Spring Boot Starter
        • 基本介绍
        • 应用实例
          • 具体实现
          • 重启项目,完成测试

数据库操作–开启Durid 监控

整合Druid 到Spring-Boot

官方文档

使用手册: https://github.com/alibaba/druid

image-20230819203149225

  • 中文手册: https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98
  • English手册: https://github.com/alibaba/druid/wiki/FAQ
  • Druid Spring Boot Starter 手册:https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter

基本介绍

  1. HiKariCP: 目前市面上非常优秀的数据源, 是springboot2 默认数据源。

  2. Druid: 性能优秀,Druid 提供性能卓越的连接池功能外【Java 基础】,还集成了SQL 监控,黑名单拦截等功能,强大的监控特性,通过Druid 提供的监控功能,可以清楚知道连接池和SQL 的工作情况,所以根据项目需要,我们也要掌握Druid 和SpringBoot 整合。

  3. 整合Druid 到Spring-Boot 方式
    ● 自定义方式
    ● 引入starter 方式

Durid 基本使用

需求: 将Spring-Boot 的数据源切换成Druid

代码实现

1.修改pom.xml , 引入druid 依赖

<!-- 引入druid 依赖-->
<dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.17</version>
</dependency>

2.创建com/nlc/usersys/config/DruidDataSourceConfig.java 配置类

@Configuration
public class DruidDataSourceConfig {//编写方法,注入DruidDataSource//说明:为什么我们注入自己的DataSource , 默认的HiKariDatasource失效?//1. 默认的数据源是如配置? @ConditionalOnMissingBean({ DataSource.class, XADataSource.class })// 解读:通过@ConditionalOnMissingBean({ DataSource.class}) 判断如果容器有DataSource Bean 就不注入默认的HiKariDatasource//2. debug源码.@ConfigurationProperties("spring.datasource")@Beanpublic DataSource dataSource() throws SQLException {//1. 配置了 @ConfigurationProperties("spring.datasource")//   就可以读取到application.yml的配置//2. 我们就不需要调用DruidDataSource 对象的setXxx, 会自动关联DruidDataSource druidDataSource = new DruidDataSource();
//        druidDataSource.setUrl("jdbc:mysql://localhost:3306/furn_ssm?useSSL=true&useUnicode=true&characterEncoding=UTF-8");
//        druidDataSource.setUsername("root");
//        druidDataSource.setPassword("123456");return druidDataSource;}
}
  1. 完成测试,运行ApplicationTests.java , 观察数据源的运行类型

image-20230819211142111

Durid 监控功能-SQL 监控

需求:

配置Druid 的监控功能,包括SQL 监控、SQL 防火墙、Web 应用、Session 监控等

SQL 监控数据

  1. 修改com/nlc/usersys/config/DruidDataSourceConfig.java , 增加druid 监控功能
    地址:https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatViewServlet%E9%85%8D%E7%BD%AE

image-20230819212727392

@Configuration
public class DruidDataSourceConfig {//编写方法,注入DruidDataSource//说明:为什么我们注入自己的DataSource , 默认的HiKariDatasource失效?//1. 默认的数据源是如配置? @ConditionalOnMissingBean({ DataSource.class, XADataSource.class })// 解读:通过@ConditionalOnMissingBean({ DataSource.class}) 判断如果容器有DataSource Bean 就不注入默认的HiKariDatasource//2. debug源码.@ConfigurationProperties("spring.datasource")@Beanpublic DataSource dataSource() throws SQLException {//1. 配置了 @ConfigurationProperties("spring.datasource")//   就可以读取到application.yml的配置//2. 我们就不需要调用DruidDataSource 对象的setXxx, 会自动关联DruidDataSource druidDataSource = new DruidDataSource();
//        druidDataSource.setUrl("jdbc:mysql://localhost:3306/furn_ssm?useSSL=true&useUnicode=true&characterEncoding=UTF-8");
//        druidDataSource.setUsername("root");
//        druidDataSource.setPassword("123456");return druidDataSource;}//配置druid的监控页功能@Beanpublic ServletRegistrationBean statViewServlet() {//创建StatViewServletStatViewServlet statViewServlet = new StatViewServlet();ServletRegistrationBean<StatViewServlet> registrationBean =new ServletRegistrationBean<>(statViewServlet, "/druid/*");//设置init-parameter, 设置用户名和密码registrationBean.addInitParameter("loginUsername", "hhh");registrationBean.addInitParameter("loginPassword", "666666");return registrationBean;}
}
  1. 完成测试: 访问http://localhost:10000/druid/index.html 不会被拦截, 如果没有问题,会看到这个页面

image-20230819213106642

image-20230819213135404

  1. 修改com/nlc/usersys/config/DruidDataSourceConfig.java , 加入监控功能

    参考: https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_StatFilter

    image-20230819213229524

 @ConfigurationProperties("spring.datasource")@Beanpublic DataSource dataSource() throws SQLException {//1. 配置了 @ConfigurationProperties("spring.datasource")//   就可以读取到application.yml的配置//2. 我们就不需要调用DruidDataSource 对象的setXxx, 会自动关联DruidDataSource druidDataSource = new DruidDataSource();
//        druidDataSource.setUrl("jdbc:mysql://localhost:3306/furn_ssm?useSSL=true&useUnicode=true&characterEncoding=UTF-8");
//        druidDataSource.setUsername("root");
//        druidDataSource.setPassword("123456");//加入监控功能, 加入了sql防火墙监控druidDataSource.setFilters("stat,wall");return druidDataSource;} 
  1. 创建com/nlc/usersys/controller/DruidSqlController.java ,模拟操作DB 的请求
@Controller
public class DruidSqlController {@Resourceprivate JdbcTemplate jdbcTemplate;@ResponseBody@GetMapping("/sql")public List<Furn> crudDB() {BeanPropertyRowMapper<Furn> rowMapper = new BeanPropertyRowMapper<>(Furn.class);List<Furn> furns = jdbcTemplate.query("select * from `furn`", rowMapper);for (Furn furn : furns) {System.out.println(furn);}return furns;}}

SQL 监控数据-测试页面

完成测试, 观察SQL 监控数据, 浏览器输入http://localhost:10000/druid/sql.html

各项的含义,请参考druid文档

image-20230819215042686

登陆后请求SQL路径

image-20230819215227433

image-20230819215248393

Durid 监控功能-Web 关联监控

需求:

配置Web 关联监控配置:Web 应用、URI 监控

官方文档https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

image-20230819215413558

image-20230819215430266

Web 关联监控配置-Web 应用、URI 监控

  1. 修改com/nlc/usersys/config/DruidDataSourceConfig.java , 注入/ 增加WebStatFilter 用于采集web-jdbc 关联监控的数据
 //配置WebStatFilter, 用于采集web-jdbc关联的监控数据@Beanpublic FilterRegistrationBean webStatFilter() {//创建 WebStatFilterWebStatFilter webStatFilter = new WebStatFilter();FilterRegistrationBean<WebStatFilter> filterRegistrationBean =new FilterRegistrationBean<>(webStatFilter);//默认对所有的url请求进行监控filterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));//排除指定的urlfilterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");return filterRegistrationBean;}
  1. 为了测试方便,修改com/nlc/usersys/config/WebConfig.java, 放行/sql 请求
@Configuration
public class WebConfig /*implements WebMvcConfigurer*/ {@Beanpublic WebMvcConfigurer webMvcConfigurer() {return new WebMvcConfigurer() {@Overridepublic void addInterceptors(InterceptorRegistry registry) {System.out.println("addInterceptors~~~");//注册拦截器registry.addInterceptor(new LoginInterceptor()).addPathPatterns("/**").excludePathPatterns("/","/login","/images/**","/upload.html","/upload","/sql");}};}
}

重启项目

完成测试,重启项目,看看Web 应用和URI 监控是否生效

image-20230819215758889

image-20230819215831369

image-20230819215849857

Durid 监控功能-SQL 防火墙

需求: 配置SQL 防火墙
官方文档https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

image-20230819215935776

SQL 防火墙

  1. 修改com/nlc/usersys/config/DruidDataSourceConfig.java ,加入防火墙监控

image-20230819220209864

  1. 完成测试,重启项目,看看SQL 防火墙监控是否生效

image-20230819220246846

image-20230819220319060

Durid 监控功能-Session 监控

需求: 配置Session 监控
官方文档https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

image-20230819220400596

image-20230819221024958

Session 监控

  1. 重启项目, 先登录管理系统

image-20230819221118968

  1. 完成测试, 查看监控页需要输入用户名和密码, 点击Session 监控,可以看到相关信息(注意要登录用户系统,才能看到Session 监控信息)

image-20230819221341149

image-20230819221519711

Druid Spring Boot Starter

基本介绍

  1. 前面我们使用的是自己引入druid+配置类方式整合Druid 和监控
  2. Druid Spring Boot Starter 可以让程序员在Spring Boot 项目中更加轻松集成Druid 和监控

应用实例

需求: 使用Druid Spring Boot Starter 方式完成Druid 集成和监控

具体实现
  1. 修改pom.xml 注销druid 的依赖
<!--        <dependency>-->
<!--            <groupId>com.alibaba</groupId>-->
<!--            <artifactId>druid-spring-boot-starter</artifactId>-->
<!--            <version>1.1.17</version>-->
<!--        </dependency>-->
  1. 注销com/nlc/usersys/config/DruidDataSourceConfig.java

  2. 这时测试,druid 失效

image-20230819222058960

  1. 查看druid 文档https://github.com/alibaba/druid,引入druid starter

image-20230819222122642

image-20230819222132731

  1. 确认druid starter 引入哪些依赖

image-20230819222155458

  1. 修改resources/application.yml 增加配置参数
spring:servlet:multipart:max-file-size: 10MBmax-request-size: 50MBdatasource: #配置数据源# 说明: 如果你没有指定useSSL=true ,启动项目会报红警告, 环境的问题,需要灵活处理url: jdbc:mysql://localhost:3306/furn_ssm?useSSL=true&useUnicode=true&characterEncoding=UTF-8username: rootpassword: 123456driver-class-name: com.mysql.jdbc.Driver#配置druid和监控功能druid:stat-view-servlet:enabled: truelogin-username: jacklogin-password: 666reset-enable: falseweb-stat-filter: #配置web监控enabled: trueurl-pattern: /*exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'filter:stat: #sql监控slow-sql-millis: 1000log-slow-sql: trueenabled: truewall: #配置sql防火墙enabled: trueconfig:drop-table-allow: falseselect-all-column-allow: false
重启项目,完成测试

完成测试

image-20230819222426229

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

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

相关文章

进程调度和进程切换——《王道考研》

一、王道书咋说 二、chatgpt咋说 进程调度和进程切换是多道程序操作系统中两个关键的概念&#xff0c;它们在处理多个进程时起着不同的作用。 2.1进程调度是指&#xff1a; 操作系统根据一定的调度算法&#xff0c;从就绪态的进程队列中选择一个进程来占用CPU资源&#xff0…

最新消息:谷歌将在Chromebook上运用UWB技术,无线通信更上一层

超宽带&#xff08;UWB&#xff09;技术是一种创新的短距离无线通信技术&#xff0c;具有高速数据传输和精确定位物体位置的优势。尽管该技术已经存在一段时间&#xff0c;但最近开始广泛应用于各种设备中。据最新报道&#xff0c;Pixel Watch 2可能会搭载UWB模块&#xff0c;这…

商城-学习整理-高级-性能压测缓存问题(十一)

目录 一、基本介绍1、性能指标2、JMeter1、JMeter 安装2、JMeter 压测示例1、添加线程组2、添加 HTTP 请求3、添加监听器4、启动压测&查看分析结果 3、JMeter Address Already in use 错误解决 二、性能监控1、jvm 内存模型2、堆3、jconsole 与 jvisualvm1、jvisualvm 能干…

20230822 Windows上使用find_package引入OpenCV报错

报错信息 打开Cmake项目时&#xff0c;find_package 报错&#xff1a; Found OpenCV Windows Pack but it has no binaries compatible with yourconfiguration.You should manually point CMake variable OpenCV_DIR to your build of OpenCVlibrary.原因 大概率原项目是在 …

发布完体验版以后,出现接口调用失败,但是在本地开发环境中可以正常访问的情况,解决办法

1.一般解决办法 通过打开微信小程序调试模式 进行调用&#xff0c;但这会有些许问题&#xff0c;出现vConsole按钮**&#xff0c;影响美观** 如图所示&#xff1a; 1.1.进入小程序 点击右上角的3个点儿 1.2.点击开发调试 1.3.点击打开调试 1.4.显示出vconsole按钮&#xf…

Fastadmin框架 聚合数字生活抵扣卡系统v2.8.6

【2.8.6更新公告】 1.【优化】优化已知问题。 2.【新增 】新增区县影院。

Docker入门

1. 什么是docker docker的英文意思是 码头工人&#xff0c;意思就是搬运东西的意思&#xff0c;其实这和docker的特点是一样的&#xff0c;docker提供的就是一种容器化搬运东西&#xff08;我们的软件、程序&#xff09;的过程。docker自己本来是运行在操作系统上一个程序软件…

软考高级系统架构设计师(二)计算机操作系统

【原文链接】软考高级系统架构设计师&#xff08;二&#xff09;计算机操作系统 2.1 进程管理 2.1.1 操作系统的三个重要作用 管理计算机中运行的程序和分配各种软硬件资源为用户提供友善的人机界面为应用程序的开发和运行提供一个高效的平台 2.1.2 操作系统的四个特征 并…

jmeter HTTP请求默认值

首先&#xff0c;打开JMeter并创建一个新的测试计划。 右键单击测试计划&#xff0c;选择"添加" > “配置元件” > “HTTP请求默认值”。 在HTTP请求默认值中&#xff0c;您可以设置全局的HTTP请求属性&#xff0c;例如&#xff1a; 服务器地址&#xff1a…

加速乐(__jsl_clearance_s)动态cookie生成分析实战

文章目录 一、写在前面二、抓包分析三、逆向分析 一、写在前面 加速乐&#xff08;JSL&#xff09;是阿里推出的一项反爬虫服务&#xff0c;其生成cookie的原理基于浏览器的行为特征 我们知道普通网站生成cookie是在请求时生成&#xff0c;而它先生成cookie&#xff0c;然后向服…

allegro输出.IPC文件

1、ipc文件的导出 板厂会使用cam软件生产一个网表文件&#xff1b;如果传递给板厂的数据中也有一个IPC文件&#xff0c;板厂将对两个网表文件进行对比&#xff1b;提高生产的安全性&#xff0c;准确性&#xff1b; 1&#xff0c;PCB软件输出的光绘文件&#xff0c;有时会变异&a…

JUC--线程池

目录 一、线程池的介绍 二、线程池的创建 三、特殊线程池 3.1.CompletionService异步处理 3.2.ThreadPoolExecutor 3.3 ForkJoinPool 虽然多线程的技术大大帮助了程序运行的效率&#xff0c;但是在太多的线程的创建与销毁下&#xff0c;系统的开销也将会是非常庞大的。所以…

stack和queue的模拟实现

stack和queue的模拟实现 容器适配器什么是适配器STL标准库中stack和queue的底层结构deque的简单介绍deque的缺陷 stack模拟实现queue模拟实现priority_queuepriority_queue的使用priority_queue的模拟实现 容器适配器 什么是适配器 适配器是一种设计模式(设计模式是一套被反复…

Python土力学与基础工程计算.PDF-隧道涌水量

Python 求解代码如下&#xff1a; 1. # 定义参数 2. A 2000 # 地表面积&#xff0c;单位&#xff1a;平方米 3. S 10 # 截面积&#xff0c;单位&#xff1a;平方米 4. h 500 # 年地下径流深度&#xff0c;单位&#xff1a;毫米 5. 6. # 转换单位 7. h h / 1000 # 单…

基于51单片机直流电机PWM调速液晶1602显示设计

一、系统方案 本文主要研究了利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法。本文中采用了三极管组成了PWM信号的驱动系统&#xff0c;并且对PWM信号的原理、产生方法以及如何通过软件编程对PWM信号占空比进行调节&#xff0c;从而控制其输入信号波形等…

Java面向对象三大特性之多态及综合练习

1.1 多态的形式 多态是继封装、继承之后&#xff0c;面向对象的第三大特性。 多态是出现在继承或者实现关系中的。 多态体现的格式&#xff1a; 父类类型 变量名 new 子类/实现类构造器; 变量名.方法名(); 多态的前提&#xff1a;有继承关系&#xff0c;子类对象是可以赋…

无线上网连接及配置

目录 1. 无线上网连接及配置 1.1 无线路由器连接方式 ​编辑 1.2 无线路由器的基本配置 1.配置用户计算机上的IP地址 2.访问无线路由Web管理界面 1.3 WAN 口设置 1.动态 IP 2.静态 IP 1. 无线上网连接及配置 一小型公司共有20名员工。由于公司业务需要访问Internet&…

考研C语言进阶题库——更新41-50题

目录 41.编写程序要求输出整数a和b若a和b的平方和大于100&#xff0c;则输出a和b的平方和&#xff0c;否则输出a和b的和 42.现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的&#xff1a;第一项是1/1&#xff0c;第二项是是…

【CAM】CAM(Class Activation Mapping)——可视化CNN的特征定位

文章目录 一、CAM(Class Activation Mapping)二、CAM技术实现2.1 网络修改2.2 微调2.2 特征提取 三、总结Reference 完整代码见Github &#xff1a;https://github.com/capsule2077/CAM-Visualization &#xff0c;如果有用可以点个Star&#xff0c;谢谢&#xff01; 一、CAM(C…

RSU交叉工具链安装不可用

1、在安装完交叉工具链去编译程序的时候&#xff0c;提示交叉工具链的命令找不到&#xff0c;检查各种路径配置其实都是配置好了&#xff0c;就是不行。 这是需要用下面的命令去更新一下交叉工具链&#xff0c;当然/opt目录下需要安装好对应文件 目前发现金溢、中兴的V2X交叉工…