SpringBoot集成Druid配置(yaml版本配置文件)详解

  1. 环境准备

在开始配置SpringBoot集成Druid之前,需要确保已经满足以下条件:

  • JDK 1.8 或更高版本
  • Maven 3.x 或更高版本
  • SpringBoot 2.x 版本或更高版本

  • 引入Druid依赖

为了集成Druid,需要在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.3</version>
</dependency>
  1. 配置Druid监控数据源

application.ymlapplication.properties文件中添加以下配置:

spring:
  datasource:
    druid:
      url: jdbc:mysql://localhost:3306/test
      username: root
      password: 123456
      driver-class-name: com.mysql.jdbc.Driver
      initial-size: 5
      min-idle: 5
      max-active: 20
      # 配置获取连接等待超时的时间
      max-wait: 60000
      # 配置间隔多久进行一次检测,检测需要关闭的空闲连接,单位毫秒
      time-between-eviction-runs-millis: 60000
      # 配置连接在池中最小生存的时间,单位毫秒
      min-evictable-idle-time-millis: 300000
      # 配置一个连接在池中最大的存活时间,单位毫秒
      max-evictable-idle-time-millis: 600000
      # 配置监控统计拦截的filters,去掉后监控界面SQL监控无法查看
      filters: stat,wall,log4j
      # 配置合并多个DruidDataSource的监控数据
      use-global-data-source-stat: true
      # 配置监控地址,默认只能本地访问
      web-stat-filter:
        enabled: true
        url-pattern: /druid/*
        reset-enable: true
      # 配置sql监控
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/*

      # 登录druid的账号和密码
      username: admin
      password: 123456

其中,配置项的意义如下:

  • url:数据库连接URL。
  • username:数据库登录用户名。
  • password:数据库登录密码。
  • driver-class-name:JDBC驱动类名。
  • initial-size:初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时。
  • min-idle:最小空闲连接数,当连接数小于该值时,会批量创建连接,直到连接数达到该值。
  • max-active:最大连接数,连接池中最多允许的连接数。
  • max-wait:获取连接时的最大等待时间,单位毫秒。如果超时则抛出异常。
  • time-between-eviction-runs-millis:在进行一次检测时,如果连接已经空闲超过该时间,则将其移除。
  • min-evictable-idle-time-millis:连接在池中最小生存的时间,如果不满足该条件则将其移除。
  • max-evictable-idle-time-millis:连接在池中最大的存活时间,如果不满足该条件则将其移除。
  • filters:配置监控统计拦截的filters,去掉后监控界面SQL监控无法查看。
  • use-global-data-source-stat:配置合并多个DruidDataSource的监控数据。
  • web-stat-filter:配置监控地址,默认只能本地访问。
  • stat-view-servlet:配置SQL监控。
  • username:Druid监控中心登录账号。
  • password:Druid监控中心登录密码。

  • 配置Druid监控中心

在SpringBoot启动类(如Application.java)添加如下代码:

@Bean
public ServletRegistrationBean registrationBean() {
    return new ServletRegistrationBean(new StatViewServlet(), "/druid/*");
}

@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;
}

其中,StatViewServletWebStatFilter均为Druid提供的原生Servlet和过滤器,用来展示Druid的监控数据。

  1. 配置Druid性能监控

Druid提供了基于AOP和拦截器的性能监控功能,可以监控查询SQL的执行时间和执行次数,方便定位性能瓶颈。

在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.3</version>
</dependency>

application.ymlapplication.properties文件中添加以下配置:

spring:
  datasource:
    druid:
      proxy-filters:
        - stat
      filter:
        stat:
          slow-sql-millis: 5000
          log-slow-sql: true

其中,proxy-filters表示要开启的拦截器列表,可以同时开启多个拦截器,例如:

proxy-filters:
- log4j
- wall

filter.stat.slow-sql-millis表示慢SQL阈值,单位毫秒,在该阈值内的SQL被视为快速SQL,超过该阈值的SQL被视为慢SQL,并打印慢日志。

filter.stat.log-slow-sql表示是否打印慢SQL日志,可以设置为true或false。

  1. 配置Druid数据源监控

Druid提供了数据源的监控功能,可以通过Druid监控中心查看数据源的基本信息和性能指标。

application.ymlapplication.properties文件中添加以下配置:

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    # 配置监控统计Log
    filter:
      stat:
        log-slow-sql: true
        slow-sql-millis: 2000
        log-communicate: true
    # Druid监控统计
    druid:
      # 配置Druid监控统计
      web-stat-filter:
        enabled: true
        url-pattern: /druid/*
        # 修改Druid监控统计页面登录用户名和密码
        login-username: admin
        login-password: admin
      filter:
        monitor:
          enabled: true
        stat:
          enabled: true
          log-slow-sql: true
          slow-sql-millis: 1000
        encoding:
          enabled: true
        config:
          enabled: true
          reset-enable: false
      # Druid SQL监控
      stat-view-servlet:
        enabled: true
        url-pattern: /druid/sql/*,/druid/*,/durid/*.html
        # 查看druid使用的变量
        reset-enable: false
        # 白名单,不受监控,可以不配置,这里配置了,监控不拦截的路径
        exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'

      connection-properties:
        druid.stat.mergeSql: true
        druid.stat.slowSqlMillis: 1000
        druid.stat.logSlowSql: true
        druid.stat.slowSqlMillis: 1000

其中,druid.stat.mergeSql表示是否合并SQL,将相似的SQL合并为一条,在Druid监控页面显示时更加方便。

druid.stat.slowSqlMillis表示慢SQL阈值,单位毫秒,在该阈值内的SQL被视为快速SQL,超过该阈值的SQL被视为慢SQL。

druid.stat.logSlowSql表示是否记录慢SQL日志,可以设置为true或false。

  1. 示例说明

以下示例为SpringBoot集成Druid在多个数据源中进行配置:

spring:
  datasource:
    # 主数据源
    master:
      driver-class-name: com.mysql.jdbc.Driver
      url: jdbc:mysql://localhost:3306/master
      username: root
      password: root
      # 连接池配置
      type: com.alibaba.druid.pool.DruidDataSource
      initialSize: 5
      minIdle: 5
      maxActive: 20
      # 连接等待超时的时间
      maxWait: 60000
      # 连接在池中最大生存的时间
      maxEvictableIdleTimeMillis: 300000
      # 连接在池中最小生存的时间
      minEvictableIdleTimeMillis: 600000
      # 对于run方法中抛出的SQLException,让调用者感知到它
      accessToUnderlyingConnectionAllowed: true
      # 开启Druid监控统计
      filter:
        stat:
          log-slow-sql: true
          slow-sql-millis: 2000
          log-communicate: true
      # Druid监控统计
      druid:
        # 配置Druid监控统计
        web-stat-filter:
          enabled: true
          url-pattern: /druid/*
          # 修改Druid监控统计页面登录用户名和密码
          login-username: admin
          login-password: admin
        filter:
          monitor:
            enabled: true
          stat:
            enabled: true
            log-slow-sql: true
            slow-sql-millis: 1000
          encoding:
            enabled: true
          config:
            enabled: true
            reset-enable: false
        # Druid SQL监控
        stat-view-servlet:
          enabled: true
          url-pattern: /druid/sql/*,/druid/*,/durid/*.html
          # 查看druid使用的变量
          reset-enable: false
          # 白名单,不受监控,可以不配置,这里配置了,监控不拦截的路径
          exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
      connection-properties:
        druid.stat.mergeSql: true
        druid.stat.slowSqlMillis: 1000
        druid.stat.logSlowSql: true
        druid.stat.slowSqlMillis: 1000

    # 从数据源
    slave:
      driver-class-name: com.mysql.jdbc.Driver
      url: jdbc:mysql://localhost:3306/slave
      username: root
      password: root
      # 连接池配置
      type: com.alibaba.druid.pool.DruidDataSource
      initialSize: 5
      minIdle: 5
      maxActive: 20
      # 连接等待超时的时间
      maxWait: 60000
      # 连接在池中最大生存的时间
      maxEvictableIdleTimeMillis: 300000
      # 连接在池中最小生存的时间
      minEvictableIdleTimeMillis: 600000
      # 对于run方法中抛出的SQLException,让调用者感知到它
      accessToUnderlyingConnectionAllowed: true
      # 开启Druid监控统计
      filter:
        stat:
          log-slow-sql: true
          slow-sql-millis: 2000
          log-communicate: true
      # Druid监控统计
      druid:
        # 配置Druid监控统计
        web-stat-filter:
          enabled: true
          url-pattern: /druid/*
          # 修改Druid监控统计页面登录用户名和密码
          login-username: admin
          login-password: admin
        filter:
          monitor:
            enabled: true
          stat:
            enabled: true
            log-slow-sql: true
            slow-sql-millis: 1000
          encoding:
            enabled: true
          config:
            enabled: true
            reset-enable: false
        # Druid SQL监控
        stat-view-servlet:
          enabled: true
          url-pattern: /druid/sql/*,/druid/*,/durid/*.html
          # 查看druid使用的变量
          reset-enable: false
          # 白名单,不受监控,可以不配置,这里配置了,监控不拦截的路径
          exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
      connection-properties:
        druid.stat.mergeSql: true
        druid.stat.slowSqlMillis: 1000
        druid.stat.logSlowSql: true
        druid.stat.slowSqlMillis: 1000

以上示例中,masterslave均为数据源名称,可以在代码中使用@Qualifier注解指定使用哪个数据源。

另外一个示例,是在application.properties中集成Druid配置:

```properties

数据源配置

spring.datasource.dynamic.primary-driver-class-name=com.mysql.jdbc.Driver
spring.datasource.dynamic.primary-url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC
spring.datasource.dynamic.primary-username=xxxx
spring.datasource.dynamic.primary-password=xxxx

druid 数据源配置

初始化大小,最小,最大

spring.datasource.druid.initial-size=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-active=50

配置获取连接等待超时的时间

spring.datasource.druid.max-wait=60000

配置间隔多久进行一次检测,检测需要关闭的空闲连接,单位毫秒

spring.datasource.druid.time-between-eviction-runs-millis=60000

配置连接在池中最小生存的时间,单位毫秒

spring.datasource.druid.min-evictable-idle-time-millis=300000

配置一个连接在池中最大的存活时间,单位毫秒

spring.datasource.druid.max-evictable-idle-time-millis=600000

配置获取连接时的超时时间

spring.datasource.druid.login-timeout=60000

这里配置监控统计拦截的filters,去掉后监控界面SQL监控无法查看

spring.datasource.druid.filters=stat,wall,log4j
spring.datasource.druid.connection-init-sqls=SELECT NOW()

配置合并多个DruidDataSource的监控数据

spring.datasource.druid.use-global-data-source-stat=true
spring.datasource.druid.pool-prepared-statements=true
spring.datasource.druid.max-pool-prepared-statement-per-conn-size=20

监控页面需要配置访问用户名和密码

spring.datasource.druid.username=xxxx
spring.datasource.druid.password=xxxx

监控页面

开启监控web页面配置

spring.datasource.druid.web-stat-filter.enabled=true
spring.datasource.druid.web-stat-filter.url-pattern=/druid

配置监控用户名和密码,如果不配置,可以通过非登录状态访问监控页面

spring.datasource.druid.stat-view-servlet.login-username=xxxx
spring.datasource.druid.stat-view-servlet.login-password=xxxx

配置IP白名单,在webStatFilter中进行配置,否则无法访问监控页面

WebStatFilter参数能过滤一部分地址,但是无法做到全部限制,loginUsername和loginPassword:配置后,为http://ip:port/druid/login.html访问 Druid的监控页指定账户和密码

SQL监控

监控单个url调用耗时

spring.datasource.druid.stat-view-servlet.url-pattern=/druid/*

是否显示SQL语句,调试时可以打开

spring.datasource.druid.stat-view-servlet.reset-enable=false

白名单,不拦截的请求地址

spring.datasource.druid.stat-view-s

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot集成Druid配置(yaml版本配置文件)详解 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • echarts使用心得——矩阵树图

    以下是ECharts使用心得——矩阵树图的完整攻略,包含两个示例: 步骤一:准备数据 首先,需要准备要展示的数据。矩阵树图的数据是一个二维数组其中每个元素表示一个节点,节点之间的关系用数字表示。以下是一个示例数据: var data = [ [0, 1, 2, 3], [1, 0, 4, 5], [, 4, 0, 6], [3, 5, 6, 0] ]; 步骤…

    other 2023年5月9日
    00
  • jquery滚动加载数据的方法

    介绍 在Web开发中,常常会有需要加载大量数据的场景,而一次性将所有数据都加载到前端,可能会导致页面加载缓慢,甚至崩溃。因此,一种常见的解决方案是通过滚动加载的方式,分段加载数据并动态地渲染到页面上。 jQuery作为一种JavaScript框架,拥有众多API,其中就包含了实现滚动加载的方法。本文将介绍jQuery实现滚动加载的方法,并提供两个示例供参考。…

    other 2023年6月25日
    00
  • python如何实现递归转非递归

    当一个算法或者函数使用递归时,它会在内存中伸展出一条递归链,最后达到解决问题的结束点,这条链往往是以下几个步骤的简单重复: 检查基本条件。 执行一些操作或者递归。 3. 更改输入参数。 递归可以使代码更加简洁和容易理解,但是递归链太长时,会消耗大量的内存资源,并且很难理清楚所有的递归过程,所以我们有必要将递归函数转换成非递归函数。 下面介绍两种将递归函数转化…

    other 2023年6月27日
    00
  • 魔兽世界7.3.5奶僧怎么堆属性 wow7.35奶僧配装属性优先级攻略

    魔兽世界7.3.5奶僧怎么堆属性攻略 1. 总体思路 奶僧的属性堆放主要分为两个部分:生存能力和治疗强度,其中生存能力包括吸收和承受伤害能力,治疗强度就是输出治疗的效果。 2. 属性优先级 2.1 生存能力属性 全能 精通 躲闪 暴击 2.2 治疗强度属性 精通 暴击 急速 全能 3. 装备选择 3.1 护甲 头、肩、胸、手、腰、腿、脚,属性优先级依次为:全…

    other 2023年6月27日
    00
  • iOS7如何关闭后台应用程序使用教程

    以下是详细讲解“iOS7如何关闭后台应用程序使用教程”的完整攻略。 1. 什么是后台应用程序? 后台应用程序是指在你按下Home键回到桌面时仍在工作的应用程序,相当于你让它暂时挂起,但并没有完全退出。 2. 如何关闭后台应用程序? 在iOS7中关闭后台应用程序的方法如下: 2.1 双击Home键 双击Home键,屏幕下方会出现已打开的应用程序列表,然后用手指…

    other 2023年6月25日
    00
  • 利用QDir实现删除选定文件目录下的空文件夹

    利用QDir实现删除选定文件目录下的空文件夹的攻略如下: 通过QDir::entryList()函数获取被选中文件夹的所有子文件夹和子文件的信息,并将它们放入一个QStringList中; 遍历上一步得到的QStringList,使用QDir::isEmpty()函数判断每个子文件夹是否为空,若为空,则递归删除该文件夹; 在递归删除时,应当从当前文件夹开始,…

    other 2023年6月26日
    00
  • AngularJs学习第五篇从Controller控制器谈谈$scope作用域

    AngularJS学习第五篇:从Controller控制器谈谈$scope作用域 在AngularJS中,控制器(Controller)是连接视图(View)和模型(Model)的重要组件之一。控制器通过$scope对象来管理视图和模型之间的数据交互。本篇攻略将详细讲解$scope作用域的使用方法和示例。 $scope作用域的基本概念 $scope是Angu…

    other 2023年8月20日
    00
  • 关于加快微信小程序开发的一些小建议

    关于加快微信小程序开发的一些小建议,其实可以分为以下几个方面: 1.选择适合的开发框架 微信小程序提供了两种基于不同语言的框架,分别是基于JavaScript的框架和基于WXML、WXSS等前端技术的框架。根据自身的情况和开发需求选择合适的框架是非常重要的。其中,基于JavaScript的框架更适合已经熟悉前端开发的工程师,而基于WXML、WXSS等前端技术…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部