美文网首页
springboot中单数据源下druid的使用

springboot中单数据源下druid的使用

作者: 墨色尘埃 | 来源:发表于2018-06-04 10:22 被阅读13次

pom.xml中添加依赖

        <!-- druid监控依赖 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.31</version>
        </dependency>

        <!--或者这个依赖也可以-->
        <!--<dependency>-->
            <!--<groupId>com.alibaba</groupId>-->
            <!--<artifactId>druid-spring-boot-starter</artifactId>-->
            <!--<version>1.1.1</version>-->
        <!--</dependency>-->

下面有两种方式进行配置,使用的时候任选一种:
① DruidConfig+DruidStatFilter+DruidStatViewServlet
DruidConfig,单数据源下需要返回new DruidDataSource();

package com.jsptpd.portal.common.config.druid;

import com.alibaba.druid.pool.DruidDataSource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.sql.DataSource;

/**
 * Created by JIHY on 2017/6/20.
 * 以上配置的监控方式是使用了原生的servlet,filter方式,然后通过@ServletComponentScan进行启动扫描包的方式进行处理的,你会发现我们的servlet,filter根本没有任何的编码。
 * 在这里我们将使用另外一种方式进行处理:使用代码注册Servlet:
 * 编写类:com.kfit.base.servlet.DruidConfiguration :
 */
@Configuration
public class DruidConfig {

    private static final Logger logger = LoggerFactory.getLogger(DruidConfig.class);

//    @Bean("druid-stat-interceptor")
//    public DruidStatInterceptor interceptor() {
//        return new DruidStatInterceptor();
//    }
//
//
//    @Bean
//    public SpringIbatisBeanTypeAutoProxyCreator proxy() {
//        SpringIbatisBeanTypeAutoProxyCreator beanTypeAutoProxyCreator = new SpringIbatisBeanTypeAutoProxyCreator();
//        beanTypeAutoProxyCreator.setInterceptorNames("druid-stat-interceptor");
//        return beanTypeAutoProxyCreator;
//    }

    //单数据源下需要返回new DruidDataSource();
    //    @Bean
    @Bean(destroyMethod = "close", initMethod = "init")
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource druidDataSource() {
        return new DruidDataSource();
    }
}

DruidStatFilter

package com.jsptpd.portal.common.config.druid;

import com.alibaba.druid.support.http.WebStatFilter;
import org.springframework.stereotype.Component;

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

/**
 * 配置监控拦截器
 * druid监控拦截器
 * @ClassName: DruidStatFilter
 * @author linge
 * @date 2017年7月24日 上午10:53:40
 */
@Component
@WebFilter(filterName="druidWebStatFilter",urlPatterns="/*",
        initParams={
                @WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")// 忽略资源
        })
public class DruidStatFilter extends WebStatFilter {

}

DruidStatViewServlet

package com.jsptpd.portal.common.config.druid;

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

import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;

/**
 * druid监控视图配置
 * @ClassName: DruidStatViewServlet
 * @author linge
 * @date 2017年7月24日 上午10:54:27
 */
@SuppressWarnings("serial")
@WebServlet(urlPatterns = "/druid/*",
        initParams={
//                @WebInitParam(name="allow",value="192.168.16.110,127.0.0.1"),// IP白名单 (没有配置或者为空,则允许所有访问)
//                @WebInitParam(name="deny",value="192.168.16.111"),// IP黑名单 (存在共同时,deny优先于allow)
                @WebInitParam(name="loginUsername",value="huangjihai"),// 用户名
                @WebInitParam(name="loginPassword",value="huangjihai"),// 密码
                @WebInitParam(name="resetEnable",value="false")// 禁用HTML页面上的“Reset All”功能
        })
public class DruidStatViewServlet extends StatViewServlet {

}

② 只是用DruidConfiguration一个类,效果相当于方法一
DruidConfiguration

package com.jsptpd.portal.common.config.druid;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;

import org.springframework.boot.context.properties.ConfigurationProperties;
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 javax.sql.DataSource;

/**
 * Created by HASEE on 2018/5/31 15:36
 * 等同于DruidConfig+DruidStatFilter+DruidStatViewServlet
 * 如果使用了DruidConfiguration那么就不要使用DruidConfig
 * 只需注释掉@Configuration即可
 * <p>
 * * 以上配置的监控方式是使用了原生的servlet,filter方式,然后通过@ServletComponentScan进行启动扫描包的方式进行处理的,你会发现我们的servlet,filter根本没有任何的编码。
 * 在这里我们将使用另外一种方式进行处理:使用代码注册Servlet:
 * 编写类:com.kfit.base.servlet.DruidConfiguration :
 */
@Configuration
public class DruidConfiguration {

    @Bean(destroyMethod = "close", initMethod = "init")
    @ConfigurationProperties(prefix = "spring.datasource")
    public DataSource druidDataSource() {
        DruidDataSource druidDataSource = new DruidDataSource();
        return druidDataSource;
    }

    /**
     * 注册一个StatViewServlet
     *
     * @return
     */
    @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", "huangjihai");
        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;
    }
}

相关文章

网友评论

      本文标题:springboot中单数据源下druid的使用

      本文链接:https://www.haomeiwen.com/subject/sijesftx.html