Spring Boot uses Druid and monitoring configuration 2 ways

(1) —— A    brief introduction to Druid , see the official website for details;

(2)  ——Configure the druid dependency package in pom.xml ;

(3)   ——Configure application.properties to add parameters such as database source type;

(4) -  Write druid servlet and filter to provide monitoring page access;

(5)  ——Enter the address for testing; 

 

Druid is the best database connection pool in Java language, and can provide powerful monitoring and extension functions.

After the industry compares  Druid  and  HikariCP  , although the performance of HikariCP is higher than that of  Druid   ,  Druid  includes  many dimensions of statistics and analysis functions, so this is why everyone chooses to use it.

Here's how to configure and use Druid in  Spring Boot 

(1) Add Maven dependencies  ( or jar packages )

      <dependency>

            <groupId>com.alibaba</groupId>

            <artifactId>druid</artifactId>

            <version>1.0.18</version>

 

</dependency>

(2) 、Configure data source related information

 

#Database  access configuration

#Main  data source, default

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) 配置监控统计功能

 

 配置方式1

package org.spring.springboot.filter;

import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;

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

/**
 * Druid的StatFilter
 * @author   郑云飞(799078779)
 * @create    2016年3月17日
 */
@WebFilter(filterName="druidWebStatFilter",urlPatterns="/*",
        initParams={
                @WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略资源
        })
public class DruidStatFilter extends WebStatFilter {

}

 

package org.spring.springboot.filter;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import com.alibaba.druid.support.http.StatViewServlet;
/**
 * StatViewServlet
 * @author zhengyunfei(799078779)
 * @create 2016年3月17日
 */
@SuppressWarnings("serial")
@WebServlet(urlPatterns = "/druid/*",
        initParams={
                @WebInitParam(name="allow",value="10.0.30.37,127.0.0.1"),// IP白名单 (没有配置或者为空,则允许所有访问)
                @WebInitParam(name="deny",value="192.168.16.111"),// IP黑名单 (存在共同时,deny优先于allow)
                @WebInitParam(name="loginUsername",value="admin"),// 用户名
                @WebInitParam(name="loginPassword",value="admin"),// 密码
                @WebInitParam(name="resetEnable",value="false")// 禁用HTML页面上的“Reset All”功能
        })
public class DruidStatViewServlet extends StatViewServlet {

}

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

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

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

配置方式二:

package org.spring.springboot.config.druid;
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;
/**
 * druid 配置.
 * 这样的方式不需要添加注解:@ServletComponentScan
 * @author zhengyunfei
 */
@Configuration
public class DruidConfiguration {
/**
 * 注册一个StatViewServlet
 * @return
 */
@Bean
public ServletRegistrationBean DruidStatViewServle(){
        //org.springframework.boot.context.embedded.ServletRegistrationBean提供类的进行注册.
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/druid/*");
        //添加初始化参数:initParams
        //白名单:
        servletRegistrationBean.addInitParameter("allow","10.0.30.37,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","admin");
        servletRegistrationBean.addInitParameter("loginPassword","123456");
        //是否能够重置数据.
        servletRegistrationBean.addInitParameter("resetEnable","false");
        return servletRegistrationBean;
        }

/**
 * 注册一个:filterRegistrationBean
 * @return
 */
@Bean
public FilterRegistrationBean druidStatFilter(){
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
        //添加过滤规则.
        filterRegistrationBean.addUrlPatterns("/*");
        //添加不需要忽略的格式信息.
        filterRegistrationBean.addInitParameter("exclusions","*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return filterRegistrationBean;
        }
}

 Start the application to access: http://127.0.0.1:8080/druid/index.html Enter the account and password: admin2/123456  to access

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326217451&siteId=291194637