美文网首页
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