springboot项目中的druid监控器的配置方法

数据源druid提供的监控器,在springboot中的配置方法。配置好后的访问地址:

localhost:xxxx/druid/
在这里插入图片描述

pom.xml


        <!-- druid第三发数据源,除tomcat jdbc、dbcp、-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.10</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

application.yml

spring:
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/mytest
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    initialSize: 5
    minIdle: 5
    maxActive: 20
    maxWait: 60000
    timeBetweenEvictionRunsMillis: 60000
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1 FROM DUAL
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    poolPreparedStatements: true
      #   配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    filters: stat,wall,log4j
    maxPoolPreparedStatementPerConnectionSize: 20
    useGlobalDataSourceStat: true
    connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

druid算是第三方数据源,在spring boot中并没有自动配置类,需要自己配置下数据。


@Configuration
public class DruidConfig {
    @ConfigurationProperties(prefix = "spring.datasource")
    @Bean
    public DataSource druid() {
        return new DruidDataSource();
    }

druid提供了servlet 和过滤器(可能表达不准确)。我们只需要把他加入到容器中并配置一些对应的参数:

(1)配置监控器的servlet:

   /**
     * 配置druid的过滤器
     * 配置一个管理后台的servlet
     *
     * druid 为我们提供的servlet是 StatViewServlet
     */
    @Bean
    public ServletRegistrationBean statViewServlet() {
        //传入我们druid提供的servlet 和访问的地址
        ServletRegistrationBean<StatViewServlet> bean = new ServletRegistrationBean<>(new StatViewServlet(),"/druid/*");
        Map<String, String> beanMap = new HashMap<>();
        beanMap.put("loginUsername", "admin");//登录名
        beanMap.put("loginPassword", "123456");//登录密码
        beanMap.put("allow", "");//允许谁登录,默认或者空 是允许所有的登录
        //还有很多参数有时间研究
        bean.setInitParameters(beanMap);
        return bean;
    } 

(2)配置监控器Servlet的Filter:

/**
   * 配置一个web监控的过滤器
   * 主要作用是过滤 请求和返回值,。
   * 在Servlet规范2.3中定义了过滤器,它能够对Servlet容器的请求和响应对象进行检查和修改。
   *
   * 过滤器本身并不生成请求和响应对象,只是提供过滤功能。
   *
   * 过滤器能够在Servlet被调用之前检查Request对象,并修改Request Header和Request内容;
   *
   * 在Servlet被调用之后检查Response对象,修改Response Header和Response的内容。
   *
   * 过滤器可以过滤的Web组件包括Servlet,JSP和HTML等文件。
   *
   * Filter类似于IO中的过滤流,实现也类似于Servlet。
   */
  @Bean
  public FilterRegistrationBean webStatFilter() {
      FilterRegistrationBean<WebStatFilter> registrationBean = new FilterRegistrationBean<>(new WebStatFilter());
      Map<String, String> beanMap = new HashMap<>();
      //排除不过滤请求的url
      beanMap.put("exclusions", "*.js,*.css,/druid/*");
      registrationBean.setInitParameters(beanMap);
      //拦截过滤所有的请求
      registrationBean.setUrlPatterns(Arrays.asList("/*"));
      return registrationBean;
  }

记录,防止以后用到找不到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值