Spring整合druid

之前写了一篇关于框架的博客,Spring Boot整合了Mybatis,其中也整合了druid,但只附上了代码,没有详细的分析

分享一篇比较详细的博客,对druid进行了详尽的分析

地址:https://blog.csdn.net/dyingfame/article/details/79347448

这里也只附上详细的配置源码,注释很全

yml:

spring:
  datasource:
    name: mysql_blog
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
      filters: stat,wall
      #驱动
      driver-class-name: com.mysql.jdbc.Driver
      #数据库连接地址
      url: jdbc:mysql://localhost:3306/blog?useUnicode=true&characterEncoding=utf-8&useSSL=true
      #用户名
      username: root
      #用户密码
      password: 1234
      #初始化大小
      initial-size: 1
      min-idle: 1
      max-active: 20
      #最大等待连接超时时间
      max-wait: 60000
      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
      time-between-eviction-runs-millis: 60000
      # 配置一个连接在池中最小生存的时间,单位是毫秒
      min-evictable-idle-time-millis: 300000
      # 校验SQL,Oracle配置 spring.datasource.validationQuery=SELECT 1 FROM DUAL,如果不配validationQuery项,则下面三项配置无用
      validation-query: SELECT 'x'
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      # 打开PSCache,并且指定每个连接上PSCache的大小
      #是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
      pool-prepared-statements: false
      max-pool-prepared-statement-per-connection-size: 20
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connection-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
      # 合并多个DruidDataSource的监控数据
      use-global-data-source-stat: true
      filter:
        config:
          enabled: true
        stat:
        #日志输出执行慢的sql
          log-slow-sql: true

配置类

package com.wmj.blog.config;

import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
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;

@Configuration
public class DruidConfiguration {
    @Bean
    public ServletRegistrationBean druidServlet(){
        ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
        //设置IP访问白名单
        servletRegistrationBean.addInitParameter("allow", "127.0.0.1");
        //设置IP访问黑名单
//        servletRegistrationBean.addInitParameter("deny", "");
        //设置控制台管理用户
        servletRegistrationBean.addInitParameter("loginUsername", "admin");
        servletRegistrationBean.addInitParameter("loginPassword", "admin");
        //是否能够重置数据 禁用HTML页面上的“Reset All”功能
        servletRegistrationBean.addInitParameter("resetEnable", "false");
        return servletRegistrationBean;
    }
    @Bean
    public FilterRegistrationBean filterRegistrationBean() {
        FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(new WebStatFilter());
        filterRegistrationBean.addUrlPatterns("/*");
        filterRegistrationBean.addInitParameter("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
        return filterRegistrationBean;
    }
}

这里配置了一个Servlet,设置了的IP访问的白名单,如果有需要也可以配置黑名单,还有Druid控制台的用户管理和是否可以充值数据的参数

还有一个过滤器,过滤了不需要监控的文件尾缀等

启动项目,访问http://localhost:8989/druid/即可进入druid监控页面

官方文档:https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

很好很详细!

你可能感兴趣的:(druid)