Background
在 SpringBoot 集成多数据源时,经常用 MyBatis Plus 配套的 dynamic-datasource 库
druid 是流行的高性能数据库连接池,两者搭配使用时,需要注意 druid 的配置方式
相关配置的地方有三处
- spring.datasource.druid
- spring.datasource.dynamic.druid
- spring.datasource.dynamic.datasource..druid
单数据源的简单配置
依赖 pom.xml
SpringBoot 版本:3.2.5
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-3-starter</artifactId>
<version>1.2.21</version>
</dependency>
数据源配置 application.yaml
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: root
druid:
socketTimeout: 60000
initialSize: 5
minIdle: 10
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
maxEvictableIdleTimeMillis: 900000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
# web 层统计
webStatFilter:
enabled: true
# web 监控页面
statViewServlet:
enabled: true
allow:
url-pattern: /druid/*
login-username: dev
login-password: dev123
# 其他 filter
filter:
stat:
enabled: true
log-slow-sql: true
slow-sql-millis: 1000
merge-sql: true
wall:
config:
multi-statement-allow: true
集成 dynamic-source
依赖 pom.xml
SpringBoot 版本:3.2.5
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-3-starter</artifactId>
<version>1.2.21</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot3-starter</artifactId>
<version>4.5.0</version>
</dependency>
集成 dyanmic-source + druid,配置方法
-
webStatFilter,statViewServlet依然配置在 spring.datasource.druid因为
DruidDynamicDataSourceConfiguration @Import 了DruidStatViewServletConfiguration 和DruidWebStatFilterConfiguration -
其他配置在 spring.datasource.dynamic.druid 或每个数据源下面:spring.datasource.dynamic.datasource..druid
可配置项参考
com.baomidou.dynamic.datasource.creator.druid.DruidConfig
数据源配置 application.yaml
spring:
datasource:
dynamic:
druid:
socketTimeout: 60000
initialSize: 5
minIdle: 10
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
maxEvictableIdleTimeMillis: 900001
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
filters: stat
stat:
log-slow-sql: true
slow-sql-millis: 15000
merge-sql: true
wall:
multi-statement-allow: true
primary: business_oracle
strict: true
datasource:
business_oracle:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: root
type: com.alibaba.druid.pool.DruidDataSource
druid:
initialSize: 6
minIdle: 100
maxActive: 200
maxWait: 60000
druid:
webStatFilter:
enabled: true
statViewServlet:
enabled: true
allow:
url-pattern: /druid/*
login-username: dev
login-password: dev123