栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot Druid Dynamic动态数据源配置连接池

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot Druid Dynamic动态数据源配置连接池

      

        最近项目需要配置2个数据库连接,一个负责门户图片查询连接,一个对接后台接口,初次配置没生效,于是查找了下原因,特此记录共勉。

       初次配置没生效原因是我把POM中  druid 给屏掉了。 当时因为baomidou的dynamic 里也有druid,简单的认为不需要druid了,直接屏掉才导致配置未生效。

正确配置如下,很简单。

一、配置依赖


   com.alibaba
   druid-spring-boot-starter
   1.1.17




   com.baomidou
   dynamic-datasource-spring-boot-starter
   2.5.4

二、修改配置application_dev.yml

spring:
  autoconfigure:
    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
  datasource:
    druid:
      stat-view-servlet:
        enabled: true
        loginUsername: admin
        loginPassword: 123456
        allow:
      web-stat-filter:
        enabled: true
    dynamic:
      druid: # 全局druid参数,单独数据源配置为空时取全局配置
        # 连接池的配置信息
        # 初始化大小,最小,最大
        initial-size: 1
        min-idle: 2
        maxActive: 8
        # 配置获取连接等待超时的时间
        maxWait: 60000
        # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
        timeBetweenEvictionRunsMillis: 60000
        # 配置一个连接在池中最小生存的时间,单位是毫秒
        minEvictableIdleTimeMillis: 300000
        validationQuery: SELECt 1 FROM DUAL
        testWhileIdle: true
        testOnBorrow: false
        testOnReturn: false
        # 打开PSCache,并且指定每个连接上PSCache的大小
        poolPreparedStatements: true
        maxPoolPreparedStatementPerConnectionSize: 20
        # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
        filters: stat,wall,slf4j
        # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
        connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
      datasource:
        master:
          url: jdbc:mysql://192.168.65.101:3306/test?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&zeroDateTimeBehavior=convertToNull
          username: test
          password: 'test'
          driver-class-name: com.mysql.jdbc.Driver
          druid: #配置master 默认连接池参数
            # 连接池的配置信息
            # 初始化大小,最小,最大
            initial-size: 3
            min-idle: 3
            maxActive: 8
            # 配置获取连接等待超时的时间
            maxWait: 600000
            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
            timeBetweenEvictionRunsMillis: 60000
            # 配置一个连接在池中最小生存的时间,单位是毫秒
            minEvictableIdleTimeMillis: 300000
            validationQuery: SELECt 1 FROM DUAL
            testWhileIdle: true
            testOnBorrow: false
            testOnReturn: false
            # 打开PSCache,并且指定每个连接上PSCache的大小
            poolPreparedStatements: true
            maxPoolPreparedStatementPerConnectionSize: 20
            # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
            filters: stat,wall,slf4j
            # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
            connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
        multi-datasource1:
          url: jdbc:mysql://192.168.65.101:3306/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&useSSL=false
          username: test
          password: 'test'
          driver-class-name: com.mysql.jdbc.Driver
          druid: # 配置multi-datasource1 数据源连接池参数
            # 连接池的配置信息
            # 初始化大小,最小,最大
            initial-size: 2
            min-idle: 2
            maxActive: 2
            # 配置获取连接等待超时的时间
            maxWait: 600000
            # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
            timeBetweenEvictionRunsMillis: 60000
            # 配置一个连接在池中最小生存的时间,单位是毫秒
            minEvictableIdleTimeMillis: 300000
            validationQuery: SELECt 1 FROM DUAL
            testWhileIdle: true
            testOnBorrow: false
            testOnReturn: false
            # 打开PSCache,并且指定每个连接上PSCache的大小
            poolPreparedStatements: true
            maxPoolPreparedStatementPerConnectionSize: 20
            # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
            filters: stat,wall,slf4j
            # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
            connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
重启后,通过netstat -ant|grep -v grep|grep 3306|wc -l  查看本机连接数据库个数(注意本机其它连接数据库的软件)。

到此配置完成,  之后就可以使用@DS 注解放在方法上指定数据源了(默认数据源不需要加注解)。

三、说明

1. druid是alibaba出品的连接池,也支持多数据源,但是要写配置类。

2. dynamic是baomidou 出的一个动态连接池包,默认使用druid连接池,也可配置使用其它如Hikari。

四、源码跟踪

1. 基于springboot入口:自动配置类,创建动态数据源

DynamicDataSourceAutoConfiguration

 2.  加载参数配置 

 

3. 创建druid数据源

 这里会进行替换,当独立数据源没有配置电接池参数时,会对null参数取全局配置进行替换。

 

如果大家在配置参数过程不生效或其它问题,可以打开DEBUG跟踪一下,以上祝顺利。 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/756692.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号