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

yizhihongxing
  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日

相关文章

  • 详述JavaScript实现继承的几种方式(推荐)

    当我们需要在JavaScript中创建对象并对其进行扩展时,我们经常需要使用继承。下面将详细讲解JavaScript实现继承的几个方式。 1.原型链继承 原型链是JavaScript中实现继承的最常用的方式之一。通过将一个构造函数的原型指向另一个构造函数的实例,我们可以实现一个构造函数从另一个构造函数中继承属性和方法。 下面是一个示例: function A…

    other 2023年6月26日
    00
  • JS 插件dropload下拉刷新、上拉加载使用小结

    JavaScript 插件 dropload 的使用小结 简介 dropload 是一个帮助实现下拉刷新和上拉加载的 JavaScript 插件,简单易用,并提供了多种自定义配置和回调函数来满足不同需求场景的使用。在下面的介绍中,我们将详细讲解如何使用和配置 dropload。 安装 你可以从 GitHub 或者 npm 上找到 dropload,然后按照相…

    other 2023年6月25日
    00
  • 火影忍者OL高手须知的火影冷知识科普

    火影忍者OL高手须知的火影冷知识科普攻略 一、介绍 在火影忍者OL中,了解一些冷知识可以帮助高手更好地了解游戏世界、提高游戏能力。本攻略将为您介绍一些火影忍者OL的冷知识,并为您提供示例说明。 二、火影忍者OL的冷知识 隐藏任务 火影忍者OL中有一些隐藏任务,它们通常不在任务列表中显示,需要玩家发现和触发。完成隐藏任务可以获得丰厚的奖励或者开启新的功能。 示…

    other 2023年6月28日
    00
  • MFC之ComboBox控件用法实例教程

    MFC之ComboBox控件用法实例教程 什么是ComboBox控件 ComboBox控件在MFC中是一种下拉式列表框,它可以显示一些选项供用户选择,同时也允许用户输入自定义的选项内容。该控件常用于数据输入和选择性操作上。 如何在MFC中使用ComboBox控件 使用ComboBox控件需要先创建一个ComboBox对象,该对象会被添加到对应的对话框或者视图…

    other 2023年6月27日
    00
  • 关于python:pycharm“运行配置” 要求“脚本参数”

    关于Python: PyCharm“运行配置”要求“脚本参数”的攻略 在使用PyCharm进行Python开发时,我们经常需要在运行Python脚本时传递一些参数。本攻略将详细介绍如何在PyCharm中配置脚本参数,并提供两个示例。 方法1:使用PyCharm的“运行配置”功能 PyCharm提供了一个“运行配置”功能,可以方便地配置Python脚本的运行参…

    other 2023年5月9日
    00
  • win7系统电脑运行程序软件出现libeay32.dll丢失的解决方法

    题目:win7系统电脑运行程序软件出现libeay32.dll丢失的解决方法 简介 libeay32.dll是OpenSSL密码库中的一个重要的动态链接库文件,它为软件运作提供必要的支持。如果在运行软件时遇到“libeay32.dll 文件丢失”或“找不到libeay32.dll”等错误提示,那么应该按照下面的方式进行排查和处理。 解决方法 以下是几种解决方…

    other 2023年6月27日
    00
  • java中数组的应用及方法

    Java中数组的应用及方法 什么是数组 在Java中,数组(Array)是一种数据结构,可以用来存储一组相同类型的数据。数组的编号从0开始,因此第一个元素的编号是0,第二个元素的编号是1,以此类推。数组长度是在定义数组时指定的,且不可修改。数组可以是一维的,也可以是多维的。 数组的定义 定义一个数组需要指定数组的类型、名称和长度。如下是定义一个长度为3的整型…

    other 2023年6月25日
    00
  • javascript严格模式详解(含严格模式与非严格模式的区别)

    JavaScript严格模式详解(含严格模式与非严格模式的区别) 什么是严格模式? JavaScript严格模式(Strict Mode)是一种在JavaScript中运行代码的特殊模式。它通过限制一些不安全的语法和行为,提供更严格的错误检查,以帮助开发者编写更可靠、更规范的代码。 如何启用严格模式? 要启用严格模式,可以在脚本文件或函数的开头添加\”use…

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