有关Druid的一些配置

简介

Druid 是 Java 语言中最好的数据库连接池。 Druid 能够提供强大的监控和扩展功能。

官方链接https://github.com/alibaba/druid

以下所有配置基于springboot2.2.6配置

怎么使用

maven项目直接引用

	 <!--阿里数据库连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.14</version>
        </dependency>

Druid的一些常用配置

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://127.0.0.1:3306/gmaya?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
      username: root
      password: root
      # 初始化时建立物理连接的个数
      initial-size: 5
      # 最大连接池数量,并不是连接池越大越好。
      max-active: 10
      # 最小连接池数量
      min-idle: 5
      # 获取连接时最大等待时间,单位毫秒。
      max-wait: 60000
      # 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大.
      pool-prepared-statements: true
      # 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
      max-pool-prepared-statement-per-connection-size: 20
      # 申请连接时会执行validationQuery检测连接是否有效,开启会降低性能.官方写的默认true,但是看源码里面好像是默认false
      test-on-borrow: false
      # 归还连接时会执行validationQuery检测连接是否有效,开启会降低性能,默认为false
      test-on-return: false
      # 合并多个DruidDataSource的监控数据
      # 设置为true会和time-between-log-stats-millis冲突,启动项目失败
      use-global-data-source-stat: false
      # 配置扩展插件
      #监控统计用的filter:stat
      #日志用的filter:log4j
      #防御sql注入的filter:wall
      filters: stat,wall,slf4j
      # 用来检测连接是否有效的sql 必须是一个查询语句
      # mysql中为 select 'x'
      # oracle中为 select 1 from dual
      validation-query: select 'x'
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connect-properties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
      # 定时输出统计信息到日志中,并每次输出日志会导致清零(reset)连接池相关的计数器。
      time-between-log-stats-millis: 300000
      #验证连接的有效性,建议配置为true,不影响性能,并且保证安全性。
      test-while-idle: true
      #1) Destroy线程会检测连接的间隔时间,如果连接空闲时间大于等于minEvictableIdleTimeMillis则关闭物理连接。
      #2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明
      time-between-eviction-runs-millis: 60000
      # 连接保持空闲而不被驱逐的最小时间(连接池空闲连接的有效时间)
      min-evictable-idle-time-millis: 300000
      # 浏览器监控页面
      stat-view-servlet:
        # 是否启用监控页面,启用建议设置密码或白名单以保障安全
        enabled: true
        url-pattern: '/druid/*'
        # IP白名单(没有配置或者为空,则允许所有访问)
        allow: 127.0.0.1,192.168.0.1
        # IP黑名单 (存在共同时,deny优先于allow)
        deny: 192.168.0.1
        login-username: gmaya
        login-password: gmaya

      # 配置DruidStatFilter
      web-stat-filter:
        enabled: true
        url-pattern: '/*'
        # 排除一些不必要的url,比如.js,/css/等等
        exclusions: '*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*'


注意:建议配置白名单,密码访问。
test-on-borrow默认值问题:
官方文档解释:

然而自己查看实际效果却不一样,不知道是不是我的问题。
在源码中发现

dataMap.put("TestOnBorrow", this.isTestOnBorrow()); 
dataMap.put("TestOnReturn", this.isTestOnReturn());
this.testOnBorrow = false;
this.testOnReturn = false;
public static final boolean DEFAULT_TEST_ON_BORROW = false;
public static final boolean DEFAULT_TEST_ON_RETURN = false;

或者把这两个参数注释。启动查看页面

数据库密码加密

找到maven仓库中druid 的jar包

D:\maven-repository\com\alibaba\druid\1.1.14

然后打开cmd输入

java -cp druid-1.1.14.jar com.alibaba.druid.filter.config.ConfigTools 你的密码

然后得到

privateKey:MIIBVgIBADANBgkqhkiG9w0BAQEFAASCAUAwggE8AgEAAkEAty+xzmC/4596DAoD+OI0zThfJq6P5ZdcBx+iTrBisD9ViQSwOUktzYi1o4ZiJ+Akv2rR9Q47+CpEvjH123nvQIDAQABAkEAj+IycrujfRKCNnqXbCGg/6BLfIKYG+mrKx05yzzYBz4e8R1/c1HCOn8D5YWDtKEXX5o1FKmJPHFyd0/OL8MhsQIhAP/P35Vitx7jN1B8gmgcmRhKYTgc6bVrkwNG8oLZaYr/AiEAt1IobJLPTOZffLkAY9K365IsK9Ky7a7uq4KniN8yOUMCIHWMbP41PVZ5LHrUrAvxUDxEOYZSauZNx2FTIa8U/pW7AiEArQv47MSIuuacLHfWTmSTCOQqnhN+o68FzRDAZQuLtVECIQCdBeUAddQSBtT7n32N36PWZS3oKnQ1sGVY2xCRC8o5Iw==
publicKey:MFwwDQYJKoZIhvcNAQEBBQADS32sc5gv+OfegwKA/jiNM04Xyauj+WXXAcfok6wYrA/VYkEsDlJLc2ItaOGYifgJL9q0fUOO/gqRL4x0K1gJ70CAwEAAQ==
password:FsnBV+3RyPMUBHjG4unvXV21Z1tC+xi19Xy5f/JSm0ktb5m17+B5fOzyDNTcFACmhx3zg/lMaFOIy0UfOA==


然后更改配置
将明文密码替换

password: gMs08dqeyRQC3fsgEvb4pgmr2W/xVDgewGJLOJFZZOm8wfsVI0397uXGIe1W0rXJQl/meyB/GhqLt82fD8kiZw==

新增密码解密,同时config.decrypt.key=上面生成的publicKey.

      # ConfigFilter,开启密码加密功能
      filter:
        config:
          enabled: true
      # 配置参数,让ConfigFilter解密密码
      connection-properties: config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAK23puqpHZjqJ7+DQkJBWKIYdc0nkSqZeLVrQtwMvRwXCRgtG5+/IKO8xhMTSGwhjglloiTiVnJ9IynvpyFVpgUCAwEAAQ==
      

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值