配置druid监控页面

第一步:创建项目


第二步:导入依赖 并加引入

<properties><java.version>1.8</java.version>
</properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.21</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId></dependency><!-- druid连接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.13</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency>
</dependencies><!-- 项目构建 -->
<build><finalName>${project.artifactId}</finalName><resources><resource><directory>src/main/resources</directory><filtering>true</filtering></resource></resources><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>2.3.2</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin></plugins>
</build>

第三步 : 配置数据源

server:port: 8007spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedruid:driverClassName: com.mysql.jdbc.Driverurl: jdbc:mysql:/地址:端口号/databaseName?useUnicode=true&characterEncoding=utf-8username: usernamepassword: passwordinitial-size: 10# 最大连接池个数max-active: 100# 最小连接池个数——》已经不再使用,配置了也没效果min-idle: 10# 配置获取连接等待超时的时间,单位毫秒,缺省启用公平锁,并发效率会有所下降max-wait: 60000# 打开PSCache,并且指定每个连接上PSCache的大小pool-prepared-statements: truemax-pool-prepared-statement-per-connection-size: 20time-between-eviction-runs-millis: 60000min-evictable-idle-time-millis: 300000max-evictable-idle-time-millis: 60000validation-query: SELECT 1 FROM DUAL# validation-query-timeout: 5000# 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能test-on-borrow: false# 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能test-on-return: false# 建议配置为true,不影响性能,并且保证安全性。# 申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。test-while-idle: true# 通过connectProperties属性来打开mergeSql功能;慢SQL记录connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000# 通过别名的方式配置扩展插件,多个英文逗号分隔,常用的插件有:# 监控统计用的filter:stat# 日志用的filter:log4j#filters: #配置多个英文逗号分隔(统计,sql注入,log4j过滤) 防御sql注入的filter:wallfilters: stat,wall,log4jstat-view-servlet:enabled: trueurl-pattern: /druid/*

第四步:Druid数据库连接池配置文件和配置 Druid 监控界面

package com.example.demo.config;import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
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 org.springframework.jdbc.core.JdbcTemplate;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import com.alibaba.druid.util.Utils;/*** Druid数据库连接池配置文件*/
@Configuration
public class DruidConfig {private static final Logger logger = LoggerFactory.getLogger(DruidConfig.class);@Value("${spring.datasource.druid.url}")private String dbUrl;@Value("${spring.datasource.druid.username}")private String username;@Value("${spring.datasource.druid.password}")private String password;@Value("${spring.datasource.druid.driverClassName}")private String driverClassName;@Value("${spring.datasource.druid.initial-size}")private int initialSize;@Value("${spring.datasource.druid.max-active}")private int maxActive;@Value("${spring.datasource.druid.min-idle}")private int minIdle;@Value("${spring.datasource.druid.max-wait}")private int maxWait;@Value("${spring.datasource.druid.pool-prepared-statements}")private boolean poolPreparedStatements;@Value("${spring.datasource.druid.max-pool-prepared-statement-per-connection-size}")private int maxPoolPreparedStatementPerConnectionSize;@Value("${spring.datasource.druid.time-between-eviction-runs-millis}")private int timeBetweenEvictionRunsMillis;@Value("${spring.datasource.druid.min-evictable-idle-time-millis}")private int minEvictableIdleTimeMillis;@Value("${spring.datasource.druid.max-evictable-idle-time-millis}")private int maxEvictableIdleTimeMillis;@Value("${spring.datasource.druid.validation-query}")private String validationQuery;@Value("${spring.datasource.druid.test-while-idle}")private boolean testWhileIdle;@Value("${spring.datasource.druid.test-on-borrow}")private boolean testOnBorrow;@Value("${spring.datasource.druid.test-on-return}")private boolean testOnReturn;@Value("${spring.datasource.druid.filters}")private String filters;@Value("{spring.datasource.druid.connection-properties}")private String connectionProperties;/*** Druid 连接池配置*/@Bean     //声明其为Bean实例public DruidDataSource dataSource() {DruidDataSource datasource = new DruidDataSource();datasource.setUrl(dbUrl);datasource.setUsername(username);datasource.setPassword(password);datasource.setDriverClassName(driverClassName);datasource.setInitialSize(initialSize);datasource.setMinIdle(minIdle);datasource.setMaxActive(maxActive);datasource.setMaxWait(maxWait);datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);datasource.setMaxEvictableIdleTimeMillis(minEvictableIdleTimeMillis);datasource.setValidationQuery(validationQuery);datasource.setTestWhileIdle(testWhileIdle);datasource.setTestOnBorrow(testOnBorrow);datasource.setTestOnReturn(testOnReturn);datasource.setPoolPreparedStatements(poolPreparedStatements);datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);try {datasource.setFilters(filters);} catch (Exception e) {logger.error("druid configuration initialization filter", e);}datasource.setConnectionProperties(connectionProperties);return datasource;}/*** 去除监控页面底部的广告*/@SuppressWarnings({ "rawtypes", "unchecked" })@Bean@ConditionalOnProperty(name = "spring.datasource.druid.statViewServlet.enabled", havingValue = "true")public FilterRegistrationBean removeDruidFilterRegistrationBean(DruidStatProperties properties){// 获取web监控页面的参数DruidStatProperties.StatViewServlet config = properties.getStatViewServlet();// 提取common.js的配置路径String pattern = config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*";String commonJsPattern = pattern.replaceAll("\\*", "js/common.js");final String filePath = "support/http/resources/js/common.js";// 创建filter进行过滤Filter filter = new Filter(){public void init(javax.servlet.FilterConfig filterConfig) throws ServletException{}public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException{chain.doFilter(request, response);// 重置缓冲区,响应头不会被重置response.resetBuffer();// 获取common.jsString text = Utils.readFromResource(filePath);// 正则替换banner, 除去底部的广告信息text = text.replaceAll("<a.*?banner\"></a><br/>", "");text = text.replaceAll("powered.*?shrek.wang</a>", "");response.getWriter().write(text);}@Overridepublic void destroy(){}};FilterRegistrationBean registrationBean = new FilterRegistrationBean();registrationBean.setFilter(filter);registrationBean.addUrlPatterns(commonJsPattern);return registrationBean;}/*** JDBC操作配置*/@Bean(name = "dataOneTemplate")public JdbcTemplate jdbcTemplate (@Autowired DruidDataSource dataSource){return new JdbcTemplate(dataSource) ;}/*** 配置 Druid 监控界面*/@Beanpublic ServletRegistrationBean statViewServlet(){ServletRegistrationBean srb =new ServletRegistrationBean(new StatViewServlet(),"/druid/*");//设置控制台管理用户srb.addInitParameter("loginUsername","root");srb.addInitParameter("loginPassword","root");//是否可以重置数据srb.addInitParameter("resetEnable","false");return srb;}@Beanpublic FilterRegistrationBean statFilter(){//创建过滤器FilterRegistrationBean frb =new FilterRegistrationBean(new WebStatFilter());//设置过滤器过滤路径frb.addUrlPatterns("/*");//忽略过滤的形式frb.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");return frb;}
}

到此,配置已经完成了接下来查看页面

需要提醒一下:因为没有sql语句操作,所以SQL监控没有数据;登录账号密码在代码里面写死的:
username:root
password:root
在这里提供一下我的代码结构

配置druid监控页面相关推荐

  1. SpringBoot 配置Druid监控页面

    首先创建druid配置类:用户名.密码需要自行修改. package org.demo;import com.alibaba.druid.pool.DruidDataSource; import co ...

  2. Druid监控页面的配置和使用

    目录 Druid监控页面的配置和使用 Druid运用背景 Druid配置 Druid详细配置 开启慢sql监控 开启Spring监控 Druid监控页面的配置和使用 Druid运用背景 Druid是由 ...

  3. Druid监控页面配置用户密码、去除Ad

    1.druid依赖 <!-- https://mvnrepository.com/artifact/com.alibaba/druid-spring-boot-starter --> &l ...

  4. springboot下配置druid监控

    springboot下配置druid监控 在springboot中引用的包 相关配置 页面访问 获取druid监控数据 官方介绍如下:Druid是Java语言中最好的数据库连接池.Druid能够提供强 ...

  5. druid监控页面 关闭_阿里Druid监控页面分析

    本文主要介绍Druid监控页面的生成流程及代码手法 监控效果图 以下是Druid自带的监控页面图,主要用于展示在DruidDataSource数据源当中存储的监控信息,这部分监控信息存储在内存中,通过 ...

  6. druid监控页面 关闭_新版druid监控页面SQL不显示问题

    新版druid数据源驱动的SQL监控如果用以前的老版本配置是无法监控到SQL的: application.yml spring: datasource: druid: filters: - stat ...

  7. springboot 配置 druid 监控

    pom 文件引入 druid 依赖 <!--引入druid数据源--> <dependency><groupId>com.alibaba</groupId&g ...

  8. Druid监控页面配置reset-enable的说明

    最近使用到Druid数据库连接池,就研究了一番. 发现reset-enable 设置后: 监控页面的"重置按钮"并没有消失. 点击后也有反馈: 后来,做了以下尝试: 设置为fals ...

  9. nutz配置druid监控

    druid 提供了一个web端的监控页面, 搭建起来不算麻烦, 建议添加. 打开web.xml, 在nutz的filter之前, 加入Web监控的配置 <filter><filter ...

最新文章

  1. 前端页面——Cookie与Session有什么区别
  2. Docker最全教程——从理论到实战(六)
  3. java 树状数组模板源码
  4. 白鹭引擎生成自定义整数随机数
  5. python消息框设置_Python Tkinter消息框(附带实例讲解)
  6. mysql添加 分隔_分割字符串并插入表---mysql
  7. 学习MyBatis之简单入门HelloWorld
  8. RDIFramework.NET开发实例━表约束条件权限的使用-WinForm
  9. nexus build docker private registry
  10. python基础:列表(list)
  11. 类别不平衡学习的常用策略
  12. 抖音直播间弹幕发言采集工具
  13. 什么是运维工程师?运维工程师应该具备的素质
  14. 咻咻验证码,见证百合网发展壮大!
  15. 7z的压缩包linux下如何解压软件,7z(p7zip)压缩软件在Linux下的安装和使用
  16. Python mysql的常用操作
  17. 前端之移动web开发(下)
  18. 一、 网络安全基础入门-概念名词
  19. IC讲解: 如何区分CP测试和FT测试
  20. 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对

热门文章

  1. WordPress使用百度分享插件
  2. VS打开项目出现一堆未定义标识符的解决办法
  3. docker-compose部署6.8.23版本elasticsearch+es-head+kibana多节点集群及部分排错处理
  4. mysql创建sql文件命令_创建包含sql命令的sql脚本文件
  5. SAS Expander及Linux下面的代码实现
  6. 原创43条好看的网名
  7. SnowingView
  8. 移动硬盘“文件或目录损坏,无法读取”解决方案
  9. 360一代加固脱壳方法总结
  10. 用Python爬取手机壁纸,太简单了吧!