首页 > 技术文章 > spring boot 添加druid

xusongfeng 2018-01-29 16:45 原文

第一步:添加依赖

<!-- druid  -->

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>druid</artifactId>

<version>1.0.18</version>

</dependency>

 

第二步:

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

spring.datasource.name=druid

 

spring.datasource.druid.initialSize=5

spring.datasource.druid.minIdle=5

spring.datasource.druid.maxActive=20

spring.datasource.druid.maxWait=60000

spring.datasource.druid.timeBetweenEvictionRunsMillis=60000

spring.datasource.druid.minEvictableIdleTimeMillis=300000

spring.datasource.druid.validationQuery=SELECT 1 FROM t_user

spring.datasource.druid.testWhileIdle=true

spring.datasource.druid.testOnBorrow=true

spring.datasource.druid.testOnReturn=false

spring.datasource.druid.poolPreparedStatements=true

spring.datasource.druid.maxPoolPreparedStatementPerConnectionSize=20

spring.datasource.druid.filters=stat,wall,log4j

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

 

第三步 增加读取配置文件和创建servlet Filter

package com.lanou.druid;

 

import javax.sql.DataSource;

 

import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;

import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;

import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;

import org.springframework.boot.context.properties.ConfigurationProperties;

import org.springframework.boot.jdbc.DatabaseDriver;

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;

@Configuration

@ConditionalOnClass(com.alibaba.druid.pool.DruidDataSource.class)

@ConditionalOnProperty(name = "spring.datasource.type", havingValue = "com.alibaba.druid.pool.DruidDataSource", matchIfMissing = true)

public class DruidDataSourceConfiguration {

 

 

    @SuppressWarnings("unchecked")

    protected <T> T createDataSource(DataSourceProperties properties,

                                     Class<? extends DataSource> type) {

        return (T) properties.initializeDataSourceBuilder().type(type).build();

    }

 

    /**

     * @see org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration.Tomcat 仿写的你可以去了解

     * @param properties 读入的配置

     * @return DruidDataSource

     */

    @Bean

    @ConfigurationProperties("spring.datasource.druid")

    public com.alibaba.druid.pool.DruidDataSource dataSource(DataSourceProperties properties) {

 

        com.alibaba.druid.pool.DruidDataSource dataSource = createDataSource(

                properties, com.alibaba.druid.pool.DruidDataSource.class);

 

        DatabaseDriver databaseDriver = DatabaseDriver.fromJdbcUrl(properties.determineUrl());

 

        String validationQuery = databaseDriver.getValidationQuery();

        if (validationQuery != null) {

            dataSource.setTestOnBorrow(true);

            dataSource.setValidationQuery(validationQuery);

        }

 

        return dataSource;

    }

 

    /**

     * 注册一个StatViewServlet

     */

    @Bean

    public ServletRegistrationBean druidStatViewServlet(){

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

        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(),"/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","root");

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

        //是否能够重置数据.

        servletRegistrationBean.addInitParameter("resetEnable","false");// 禁用HTML页面上的“Reset All”功能

        return servletRegistrationBean;

    }

 

    /**

     * 注册一个:filterRegistrationBean

     */

    @Bean

    public FilterRegistrationBean druidStatFilter(){

 

        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());

        filterRegistrationBean.setName("druidWebStatFilter");

        //添加过滤规则.

        filterRegistrationBean.addUrlPatterns("/*");

        //添加忽略的格式信息.

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

        return filterRegistrationBean;

    }

}

 

第四步:访问地址 http://localhost:8080/druid

推荐阅读