zoukankan      html  css  js  c++  java
  • springboot-7-配置druid数据源监视

    关于druid数据源的配置, 上个博客已经说过了,再说一遍吧

    1, 引入依赖
    2, 配置properties参数
    3, 编写servlet和filter提供页面监视
    4, 测试 

    1, 引入maven依赖

    <!-- druid数据源 -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.0.25</version>
            </dependency>

    2, 在properties中设置参数, 记得把默认的注释掉

    # 数据库访问配置
    # 主数据源,默认的
    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

    3, 配置监控

      这里有2种配置方式, 分别说

      1), 基于springboot的注解进行配置

      filter

    package com.iwhere.druid;
    
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.annotation.WebInitParam;
    
    import com.alibaba.druid.support.http.WebStatFilter;
    
    /**
     * 配置druid监视源的filter
     */
    @WebFilter(filterName="druidWebStatFilter",urlPatterns="/*",  
    initParams={  
        @WebInitParam(name="exclusions",value="*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*")//忽略资源  
    }  
    ) 
    public class DruidStatFilter extends WebStatFilter{
     
    }

        servlet:

    package com.iwhere.druid;
    
    import javax.servlet.annotation.WebInitParam;  
    import javax.servlet.annotation.WebServlet;  
      
    import com.alibaba.druid.support.http.StatViewServlet;  
      
    @WebServlet(urlPatterns="/druid/*",  
        initParams={  
             @WebInitParam(name="allow",value="127.0.0.1,192.168.163.1"),// IP白名单(没有配置或者为空,则允许所有访问)  
             @WebInitParam(name="deny",value="192.168.1.73"),// IP黑名单 (存在共同时,deny优先于allow)  
             @WebInitParam(name="loginUsername",value="admin"),// 用户名  
             @WebInitParam(name="loginPassword",value="123"),// 密码  
             @WebInitParam(name="resetEnable",value="false")// 禁用HTML页面上的“Reset All”功能  
    })  
    public class DruidStatViewServlet extends StatViewServlet {  
        private static final long serialVersionUID = -2688872071445249539L;  
      
    }  

        2), 第二种配置方式, 使用ServletRegistrationBean 和FilterRegistrationBean的方式进行注册Servlet和Filter

    import com.alibaba.druid.pool.DruidDataSource;
    import com.alibaba.druid.support.http.StatViewServlet;
    import com.alibaba.druid.support.http.WebStatFilter;
    import org.springframework.beans.factory.annotation.Value;
    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 javax.sql.DataSource;
    import java.sql.SQLException;
    
    @Configuration
    public class DruidConfiguration {
        @Bean
        public ServletRegistrationBean druidServlet() {
            ServletRegistrationBean reg = new ServletRegistrationBean();
            reg.setServlet(new StatViewServlet());
            reg.addUrlMappings("/druid/*");
            //reg.addInitParameter("allow", "127.0.0.1");
            //reg.addInitParameter("deny","");
            reg.addInitParameter("loginUsername", "admin");
            reg.addInitParameter("loginPassword", "admin");
            return reg;
    } @Bean public DataSource druidDataSource(@Value("${spring.datasource.driverClassName}") String driver, @Value("${spring.datasource.url}") String url, @Value("${spring.datasource.username}") String username, @Value("${spring.datasource.password}") String password) { DruidDataSource druidDataSource = new DruidDataSource(); druidDataSource.setDriverClassName(driver); druidDataSource.setUrl(url); druidDataSource.setUsername(username); druidDataSource.setPassword(password); try { druidDataSource.setFilters("stat, wall"); } catch (SQLException e) { e.printStackTrace(); } return druidDataSource; } @Bean public FilterRegistrationBean filterRegistrationBean() { FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(); filterRegistrationBean.setFilter(new WebStatFilter()); filterRegistrationBean.addUrlPatterns("/*"); filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"); return filterRegistrationBean; } }

    4, 之后既可以通过地址: http://localhost:8080/springboot-learn/druid/index.html 进行访问

  • 相关阅读:
    腾讯课堂目标2017初中数学联赛集训队作业题解答-8
    2016猿辅导初中数学竞赛训练营作业题解答-10
    2016猿辅导初中数学竞赛训练营作业题解答-9
    2016猿辅导初中数学竞赛训练营作业题解答-8
    分类讨论的经典之作: 一道烧脑的数学竞赛压轴题解法赏析
    腾讯课堂目标2017初中数学联赛集训队作业题解答-7
    2016猿辅导初中数学竞赛训练营作业题解答-7
    腾讯课堂目标2017初中数学联赛集训队作业题解答-6
    正则:千分位
    为什么vue中的data用return返回呢?
  • 原文地址:https://www.cnblogs.com/wenbronk/p/6553994.html
Copyright © 2011-2022 走看看