博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot + Druid 监控数据库(三)
阅读量:6260 次
发布时间:2019-06-22

本文共 5025 字,大约阅读时间需要 16 分钟。

Druid可以做什么? 

1) 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。 

2) 替换和。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。 

3) 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。 

4) SQL执行日志,Druid提供了不同的LogFilter,能够支持、和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。 

扩展JDBC,如果你要对JDBC层有编程的需求,可以通过Druid提供的Filter-Chain机制,很方便编写JDBC层的扩展插件。

 

工程目录结构:

 

1、pom.xml

添加Druid依赖

4.0.0
com.zit
SpringBoot
0.0.1-SNAPSHOT
jar
UTF-8
org.springframework.boot
spring-boot-starter-parent
2.0.1.BUILD-SNAPSHOT
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-data-jpa
org.springframework.boot
spring-boot-starter-thymeleaf
com.alibaba
druid
1.0.29
spring-snapshots
Spring Snapshots
https://repo.spring.io/libs-snapshot
true

 

然后在项目名称上右键——maven——update project

即可加入依赖的jar包

 

2、配置文件application.properties:

加入管理数据源的Druid配置信息

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource#DB Configuration:spring.datasource.driverClassName = com.mysql.jdbc.Driverspring.datasource.url = jdbc:mysql://localhost:3306/test?characterEncoding=utf-8spring.datasource.username = rootspring.datasource.password = spring.datasource.filters=stat,wall,log4jspring.datasource.maxActive=20spring.datasource.initialSize=1spring.datasource.maxWait=60000# 打开PSCache,并且指定每个连接上PSCache的大小spring.datasource.poolPreparedStatements=truespring.datasource.maxPoolPreparedStatementPerConnectionSize=20# 通过connectProperties属性来打开mergeSql功能;慢SQL记录spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒spring.datasource.timeBetweenEvictionRunsMillis=60000# 配置一个连接在池中最小生存的时间,单位是毫秒spring.datasource.minEvictableIdleTimeMillis=300000# 校验SQL,Oracle配置 spring.datasource.validationQuery=SELECT 1 FROM DUAL,如果不配validationQuery项,则下面三项配置无用spring.datasource.validationQuery=SELECT 'x'spring.datasource.testWhileIdle=truespring.datasource.testOnBorrow=falsespring.datasource.testOnReturn=false#JPA Configuration:  spring.jpa.database=MySQLspring.jpa.show-sql=true  spring.jpa.generate-ddl=true  spring.jpa.hibernate.ddl-auto=update  spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.ImprovedNamingStrategy  #关闭thymeleaf缓存spring.thymeleaf.cache=false

 

3、添加监控信息类

和控制器类Controller在同一目录下

package com.zit;import java.util.HashMap;import java.util.Map;import javax.servlet.ServletRegistration;import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.boot.web.servlet.ServletRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import com.alibaba.druid.support.http.StatViewServlet;import com.alibaba.druid.support.http.WebStatFilter;@Configurationpublic class DruidConfiguration {    @Bean    public ServletRegistrationBean druidServlet() {        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean();        servletRegistrationBean.setServlet(new StatViewServlet());        servletRegistrationBean.addUrlMappings("/druid/*");            Map
initParameters = new HashMap
(); initParameters.put("loginUsername","admin");// 用户名 initParameters.put("loginPassword","admin");// 密码 initParameters.put("resetEnable","false");// 禁用HTML页面上的“Reset All”功能 initParameters.put("allow",""); // IP白名单 (没有配置或者为空,则允许所有访问)// initParameters.put("deny", "192.168.0.19");// IP黑名单 //(存在共同时,deny优先于allow) servletRegistrationBean.setInitParameters(initParameters); return servletRegistrationBean; } @Bean public FilterRegistrationBean statFilter() { FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); filterRegistrationBean.setFilter(new WebStatFilter()); filterRegistrationBean .addUrlPatterns("/*"); filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); return filterRegistrationBean ; } }

 

 启动项目,输入网址:http://localhost:8080/druid/login.html

输入配置的用户名和密码,即可看到

 

转载于:https://www.cnblogs.com/Donnnnnn/p/8589785.html

你可能感兴趣的文章
java中的多线程你只要看这一篇就够了
查看>>
利用tornado实现表格文件预览
查看>>
深入call apply bind
查看>>
「前端面试题系列6」理解函数的柯里化
查看>>
用友云开发者中心助你上云系列之在线调试
查看>>
【跃迁之路】【724天】程序员高效学习方法论探索系列(实验阶段481-2019.2.14)...
查看>>
个人博客四|注册登录退出功能后台开发
查看>>
工作中常用到的ES6语法
查看>>
Django-Signals信号量
查看>>
flac格式转换mp3格式要用什么软件
查看>>
19. Remove Nth Node From End of List
查看>>
最佳在线图表软件
查看>>
Work with Alexa : 智能设备连接到Alexa
查看>>
[sublime系列文章] sublime text 3构建系统
查看>>
995. Minimum Number of K Consecutive Bit Flips
查看>>
for-loop 与 json.Unmarshal 性能分析概要
查看>>
C++中new的三种使用方法说明
查看>>
爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
查看>>
Python中_new_方法详解及使用
查看>>
flutter安装开发环境-问题记录
查看>>