问题:mgmt
项目目前配置了多数据源,当手动配置 HikariDataSource
时,会出现 DataSource 使用的是 Tomcat 的 DataSource
使用 Hikari 实现多数据源
检查数据源是否为 Hikari
ApplicationContext.getBeansOfType(DataSource.class)
是否为 HikariDataSource
,并在debug时,查看属性pool
是否为 HikariPool-x
,
如果检查不是 Hikari(有可能是 tomcat.DataSource),可按如下步骤配置
配置 HikariDataSource
1 2 3 4 5 6 7 8 9 10 11 12 13
|
# 一个默认的 DataSource @ConfigurationProperties(prefix = "spring.datasource.hikari") public DataSource dataSource(DataSourceProperties properties) { return properties.initializeDataSourceBuilder().type(HikariDataSource.class).build(); }
# 第二个 DataSource @ConfigurationProperties(prefix = "spring.datasource2.hikari") public DataSource dataSource(DataSourceProperties properties) { return properties.initializeDataSourceBuilder().type(HikariDataSource.class).build(); }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
spring:
tpl_datasource: &tpl_datasource type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.jdbc.Driver url: $url username: $username password: $pwd maximum-pool-size: 23 connection-timeout: 55000 idle-timeout: 33000 testOnBorrow: true maxLifetime: 11000
datasource: <<: *tpl_datasource username: root password: oasisadmin hikari: jdbc-url: jdbc:mysql://xxx/oasis_mgmt?useUnicode=true&characterEncoding=utf8&useSSL=false&autoReconnect=true&autoReconnectForPools=true connection-init-sql: select 1 leakDetectionThreshold: 5000 connectionTimeout: 5000 maxLifetime: 21000 maximum-pool-size: 24 data-source-properties: cachePrepStmts: true prepStmtCacheSize: 250 prepStmtCacheSqlLimit: 2048 useServerPrepStmts: true
datasource_mom: <<: *tpl_datasource hikari: jdbc-url: jdbc:mysql://xxx/oasis_mom_formal?useUnicode=true&characterEncoding=utf8&useSSL=false&autoReconnect=true&autoReconnectForPools=true connection-init-sql: select 1 leakDetectionThreshold: 5000 connectionTimeout: 5000 maxLifetime: 21000 maximum-pool-size: 24 data-source-properties: cachePrepStmts: true prepStmtCacheSize: 250 prepStmtCacheSqlLimit: 2048 useServerPrepStmts: true
|
-
由于 hikari使用的是 jdbc-url,所以 spring.datasource.hikari.jdbc-url
在每个 ds 中都要单独配置
-
由于上一条,所以 hikari 的配置无法使用 tpl模板 的方式让其他地方使用,spring.datasource.hikari.*
也都要单独配置
-
spring.datasource.*
里面的配置,所有ds默认都会使用,比如 hikari.jdbc-url
如果没有配置,则默认使用 spring.datasource.url
reference