当前位置:   article > 正文

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

dynamic druid

      

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

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

正确配置如下,很简单。

一、配置依赖

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

<!-- 动态数据源 -->
<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
   <version>2.5.4</version>
</dependency>

二、修改配置application_dev.yml

  1. spring:
  2. autoconfigure:
  3. exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
  4. datasource:
  5. druid:
  6. stat-view-servlet:
  7. enabled: true
  8. loginUsername: admin
  9. loginPassword: 123456
  10. allow:
  11. web-stat-filter:
  12. enabled: true
  13. dynamic:
  14. druid: # 全局druid参数,单独数据源配置为空时取全局配置
  15. # 连接池的配置信息
  16. # 初始化大小,最小,最大
  17. initial-size: 1
  18. min-idle: 2
  19. maxActive: 8
  20. # 配置获取连接等待超时的时间
  21. maxWait: 60000
  22. # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
  23. timeBetweenEvictionRunsMillis: 60000
  24. # 配置一个连接在池中最小生存的时间,单位是毫秒
  25. minEvictableIdleTimeMillis: 300000
  26. validationQuery: SELECT 1 FROM DUAL
  27. testWhileIdle: true
  28. testOnBorrow: false
  29. testOnReturn: false
  30. # 打开PSCache,并且指定每个连接上PSCache的大小
  31. poolPreparedStatements: true
  32. maxPoolPreparedStatementPerConnectionSize: 20
  33. # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
  34. filters: stat,wall,slf4j
  35. # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
  36. connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
  37. datasource:
  38. master:
  39. url: jdbc:mysql://192.168.65.101:3306/test?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&zeroDateTimeBehavior=convertToNull
  40. username: test
  41. password: 'test'
  42. driver-class-name: com.mysql.jdbc.Driver
  43. druid: #配置master 默认连接池参数
  44. # 连接池的配置信息
  45. # 初始化大小,最小,最大
  46. initial-size: 3
  47. min-idle: 3
  48. maxActive: 8
  49. # 配置获取连接等待超时的时间
  50. maxWait: 600000
  51. # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
  52. timeBetweenEvictionRunsMillis: 60000
  53. # 配置一个连接在池中最小生存的时间,单位是毫秒
  54. minEvictableIdleTimeMillis: 300000
  55. validationQuery: SELECT 1 FROM DUAL
  56. testWhileIdle: true
  57. testOnBorrow: false
  58. testOnReturn: false
  59. # 打开PSCache,并且指定每个连接上PSCache的大小
  60. poolPreparedStatements: true
  61. maxPoolPreparedStatementPerConnectionSize: 20
  62. # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
  63. filters: stat,wall,slf4j
  64. # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
  65. connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
  66. multi-datasource1:
  67. url: jdbc:mysql://192.168.65.101:3306/test?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&useSSL=false
  68. username: test
  69. password: 'test'
  70. driver-class-name: com.mysql.jdbc.Driver
  71. druid: # 配置multi-datasource1 数据源连接池参数
  72. # 连接池的配置信息
  73. # 初始化大小,最小,最大
  74. initial-size: 2
  75. min-idle: 2
  76. maxActive: 2
  77. # 配置获取连接等待超时的时间
  78. maxWait: 600000
  79. # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
  80. timeBetweenEvictionRunsMillis: 60000
  81. # 配置一个连接在池中最小生存的时间,单位是毫秒
  82. minEvictableIdleTimeMillis: 300000
  83. validationQuery: SELECT 1 FROM DUAL
  84. testWhileIdle: true
  85. testOnBorrow: false
  86. testOnReturn: false
  87. # 打开PSCache,并且指定每个连接上PSCache的大小
  88. poolPreparedStatements: true
  89. maxPoolPreparedStatementPerConnectionSize: 20
  90. # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
  91. filters: stat,wall,slf4j
  92. # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
  93. 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跟踪一下,以上祝顺利。 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/52378
推荐阅读
相关标签
  

闽ICP备14008679号