整体步骤:

(1)    ——   Druid简单介绍,具体看官网;

(2)     —— 在pom.xml配置druid依赖包;

(3)    ——  配置application.properties加入数据库源类型等参数;

(4)     —— 编写druid servlet和filter提供监控页面访问;

(5)     —— 输入地址进行测试;

Druid是Java语言中最好的数据库连接池,并且能够提供强大的监控和扩展功能。

业界把 Druid 和 HikariCP 做对比后,虽说 HikariCP 的性能比 Druid 高,但是因为 Druid 包括很多维度的统计和分析功能,所以这也是大家都选择使用它的原因。

下面来说明如何在 Spring Boot 中配置使用Druid

(1)添加Maven依赖 (或jar包)

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>druid</artifactId>

<version>1.0.18</version>

</dependency>

(2)、配置数据源相关信息

# 数据库访问配置

# 主数据源,默认的

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:3306/test

spring.datasource.username=root

spring.datasource.password=123456

# 下面为连接池的补充设置,应用到上面所有数据源中

# 初始化大小,最小,最大

spring.datasource.initialSize=5

spring.datasource.minIdle=5

spring.datasource.maxActive=20

# 配置获取连接等待超时的时间

spring.datasource.maxWait=60000

# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒

spring.datasource.timeBetweenEvictionRunsMillis=60000

# 配置一个连接在池中最小生存的时间,单位是毫秒

spring.datasource.minEvictableIdleTimeMillis=300000

spring.datasource.validationQuery=SELECT 1 FROM DUAL

spring.datasource.testWhileIdle=true

spring.datasource.testOnBorrow=false

spring.datasource.testOnReturn=false

# 打开PSCache,并且指定每个连接上PSCache的大小

spring.datasource.poolPreparedStatements=true

spring.datasource.maxPoolPreparedStatementPerConnectionSize=20

# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙

spring.datasource.filters=stat,wall,log4j

# 通过connectProperties属性来打开mergeSql功能;慢SQL记录

spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000

# 合并多个DruidDataSource的监控数据

#spring.datasource.useGlobalDataSourceStat=true

需要注意的是:spring.datasource.type旧的spring boot版本是不能识别的。

这时候启动应用就可以看到看到打印信息就是使用我们配置的数据源了:

[main] com.alibaba.druid.pool.DruidDataSource   : {dataSource-1} inited

(3) 配置监控统计功能

配置Servlet

如下是在SpringBoot项目中基于注解的配置,如果是web.xml配置,按规则配置即可。

com.kfit.base.servlet.DruidStatViewServlet :

package com.kfit.base.servlet;

import javax.servlet.annotation.WebInitParam;

import javax.servlet.annotation.WebServlet;

import com.alibaba.druid.support.http.StatViewServlet;

/**

* druid数据源状态监控.

@author Administrator

*

*/

@WebServlet(urlPatterns="/druid/*",

initParams={

@WebInitParam(name="allow",value="192.168.1.72,127.0.0.1"),// IP白名单(没有配置或者为空,则允许所有访问)

@WebInitParam(name="deny",value="192.168.1.73"),// IP黑名单 (存在共同时,deny优先于allow)

@WebInitParam(name="loginUsername",value="admin"),// 用户名

@WebInitParam(name="loginPassword",value="123456"),// 密码

@WebInitParam(name="resetEnable",value="false")// 禁用HTML页面上的“Reset All”功能

}

)

public class DruidStatViewServlet extends StatViewServlet{

privatestaticfinallongserialVersionUID = 1L;

}

配置Filter

com.kfit.base.servlet.DruidStatFilter :

package com.kfit.base.servlet;

import javax.servlet.annotation.WebFilter;

import javax.servlet.annotation.WebInitParam;

import com.alibaba.druid.support.http.WebStatFilter;

/**

* druid过滤器.

@author Administrator

*

*/

@WebFilter(filterName="druidWebStatFilter",urlPatterns="/*",

initParams={

@WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")//忽略资源

}

)

public class DruidStatFilter extends WebStatFilter{

}

最后在App.java类上加上注解:@ServletComponentScan是的spring能够扫描到我们自己编写的servlet和filter。

注意不要忘记在 SpringBootSampleApplication.java 上添加 @ServletComponentScan 注解,不然就是404了。

然后启动项目后访问 http://127.0.0.1:8080/druid/index.html 即可查看数据源及SQL统计等。

(4)配置监控系统方式二:

以上配置的监控方式是使用了原生的servlet,filter方式,然后通过@ServletComponentScan进行启动扫描包的方式进行处理的,你会发现我们的servlet,filter根本没有任何的编码。

在这里我们将使用另外一种方式进行处理:使用代码注册Servlet:

编写类:com.kfit.base.servlet.DruidConfiguration :

package com.kfit.base.servlet;

import org.springframework.boot.context.embedded.FilterRegistrationBean;

import org.springframework.boot.context.embedded.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;

/**

* druid 配置.

*

* 这样的方式不需要添加注解:@ServletComponentScan

@author Administrator

*

*/

@Configuration

public class DruidConfiguration {

/**

* 注册一个StatViewServlet

@return

*/

@Bean

public ServletRegistrationBean DruidStatViewServle2(){

//org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册.

ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(newStatViewServlet(),"/druid/*");

//添加初始化参数:initParams

//白名单:

servletRegistrationBean.addInitParameter("allow","127.0.0.1");

//IP黑名单 (存在共同时,deny优先于allow) : 如果满足deny的话提示:Sorry, you are not permitted to view this page.

servletRegistrationBean.addInitParameter("deny","192.168.1.73");

//登录查看信息的账号密码.

servletRegistrationBean.addInitParameter("loginUsername","admin2");

servletRegistrationBean.addInitParameter("loginPassword","123456");

//是否能够重置数据.

servletRegistrationBean.addInitParameter("resetEnable","false");

return servletRegistrationBean;

}

/**

* 注册一个:filterRegistrationBean

@return

*/

@Bean

public FilterRegistrationBean druidStatFilter2(){

FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(newWebStatFilter());

//添加过滤规则.

filterRegistrationBean.addUrlPatterns("/*");

//添加不需要忽略的格式信息.

filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");

return filterRegistrationBean;

}

}

启动应用就可以访问:http://127.0.0.1:8080/druid2/index.html输入账号和密码:admin2/123456 就可以访问了。z

springboot配置Druid监控的更多相关文章

  1. springBoot配置druid监控报错Failed to bind properties under 'spring.datasource.druid' to javax.sql.DataSource

    报错信息: Description: Failed to bind properties under 'spring.datasource.druid' to javax.sql.DataSource ...

  2. springboot中druid监控的配置(DruidConfiguration)

    当数据库连接池使用druid 时,我们进行一些简单的配置就能查看到sql监控,web监控,url监控等等. 以springboot为例,配置如下 import com.alibaba.druid.su ...

  3. springboot配置Druid数据源

    springboot配置druid数据源 Author:SimpleWu springboot整合篇 前言 对于数据访问层,无论是Sql还是NoSql,SpringBoot默认采用整合SpringDa ...

  4. SpringBoot 配置Druid数据库连接池

    创建数据库连接池配置类 package com.boot.config; import com.alibaba.druid.pool.DruidDataSource; import com.aliba ...

  5. SpringBoot 配置Druid:不显示SQL监控 —(*) property for user to setup

    题外话: SpringBoot整合Druid 请查看https://www.cnblogs.com/JealousGirl/p/druid.html Druid登录后数据源页面.SQL监控等不显示数据 ...

  6. springboot整合druid监控配置

    方式一:直接引入druid 1.maven坐标 <dependency> <groupId>com.alibaba</groupId> <artifactId ...

  7. Springboot 添加druid监控

    pom <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifa ...

  8. SpringBoot配置Druid

    Druid是Java语言中最好的数据库连接池.Druid能够提供强大的监控和扩展功能.关于详细介绍可查看http://www.iteye.com/magazines/90 SpringBoot中集成D ...

  9. SpringBoot配置 druid 数据源配置 慢SQL记录

    spring: datasource: url: jdbc:mysql://127.0.0.12:3306/test?autoReconnect=true&useUnicode=true&am ...

随机推荐

  1. Create Extraction Zone

    添加C++类,名称为FPSExtractionZone 添加盒体组件,进行公开处理,并设置为随处可见 UPROPERTY(VisibleAnywhere,Category="Componen ...

  2. python - 中文编码/ASCII

    Python 中文编码 为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5.    GB2312(1980年)一共收录了7445个字符,包括6763个汉子和682个其他符号. ...

  3. [转] Implementing a CNN for Text Classification in TensorFlow

    Github上的一个开源项目,文档讲得极清晰 Github - https://github.com/dennybritz/cnn-text-classification-tf 原文- http:// ...

  4. cei()、linspace()、arrange()、full()、eye()、empty()、random()

    1.np.ceil()函数 np.ceil()函数为朝正无穷方向取整 a = np.array([-1.7, -1.5, -0.2, 0.2, 1.5, 1.7, 2.0]) print(np.cei ...

  5. 用户态使用 glibc/backtrace 追踪函数调用堆栈定位段错误【转】

    转自:https://blog.csdn.net/gatieme/article/details/84189280 版权声明:本文为博主原创文章 && 转载请著名出处 @ http:/ ...

  6. Linux动态调频系统CPUFreq之一:概述【转】

    转自:https://blog.csdn.net/zhangyongfeiyong/article/details/53506362 随着技术的发展,我们对CPU的处理能力提出了越来越高的需求,芯片厂 ...

  7. 第六章 MVC之 FileResult和JS请求二进制流文件

    一.FileResult 1.简介 表示一个用于将二进制文件内容发送到响应的基类.它有三个子类: FileContentResultFilePathResultFileStreamResult 推荐阅 ...

  8. csrfguard3.1 部署笔记

    1:git clone 导入csrfguard 2:点击菜单栏View->Tool  Windows->Maven projects 3:Lifecycle clean build 4:t ...

  9. hybrid programming based on python and C/C++

    Python/C API Reference Manual¶ https://docs.python.org/3/c-api/index.html Extending and Embedding th ...

  10. Linux i2c 读写程序

    /* This software uses a BSD license. Copyright (c) 2010, Sean Cross / chumby industriesAll rights re ...