之前在网上也能看到很多关于多数据源的配置方式,但是大多都是同种数据库,针对不同数据库类型的资料较少,最近项目需要一个模块同时连接sqlserver、impala和Oracle,在durid中配置多个数据源连接信息后,启动报错,因为Oracle的validation-query和其他2个不一样。
尝试过自定义数据源不行,后来查看druid源码,发现在配置数据源连接信息时,就可以指定该数据源的druid的配置。
直接上例:请注意third这个数据源的配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
dynamic:
primary: master
datasource:
master:
username: test
password: test
url: {url}
driver-class-name: com.cloudera.impala.jdbc41.Driver
secondary:
username: test
password: test
url: {url}
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
third:
username: test
password: test
url: {url}
driver-class-name: oracle.jdbc.driver.OracleDriver
# 注意这儿
druid:
filters: stat,slf4j
initial-size: 8
max-active: 30
max-pool-prepared-statement-per-connection-size: 20
max-wait: 30000
min-evictable-idle-time-millis: 300000
min-idle: 8
pool-prepared-statements: true
test-while-idle: true
test-on-borrow: false
test-on-return: false
time-between-eviction-runs-millis: 60000
validation-query: 'select 1 from dual'
useGlobalDataSourceStat: true
stat:
log-slow-sql: true
merge-sql: true
slow-sql-millis: 10000
druid:
filters: stat,slf4j
initial-size: 8
max-active: 30
max-pool-prepared-statement-per-connection-size: 20
max-wait: 30000
min-evictable-idle-time-millis: 300000
min-idle: 8
pool-prepared-statements: true
test-while-idle: true
test-on-borrow: false
test-on-return: false
time-between-eviction-runs-millis: 60000
validation-query: 'select 1 '
useGlobalDataSourceStat: true
stat:
log-slow-sql: true
merge-sql: true
slow-sql-millis: 10000