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

您所在的位置:网站首页 springboot数据库连接池刷新 SpringBoot Druid Dynamic动态数据源配置连接池

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

2024-07-09 18:40| 来源: 网络整理| 查看: 265

      

        最近项目需要配置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.stargeSql\=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.stargeSql\=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.stargeSql\=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跟踪一下,以上祝顺利。 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3