【发布时间】:2018-06-17 15:03:44
【问题描述】:
有没有人在 Spring Boot 应用程序中成功配置了两个具有不同数据源的 hikari 连接池?我该如何使用 application.properties?
【问题讨论】:
标签: spring-boot db2 spring-data-jpa informix hikaricp
有没有人在 Spring Boot 应用程序中成功配置了两个具有不同数据源的 hikari 连接池?我该如何使用 application.properties?
【问题讨论】:
标签: spring-boot db2 spring-data-jpa informix hikaricp
我知道很久以前有人问过这个问题,但我认为它可能对其他人有所帮助。 另外,我不认为上面提到的“可能重复”回答了这个问题。
我正在使用带有 maven 的 spring boot 2.0.4。 而不是像使用一个数据库那样为 hikary 提供专用范围,例如
datasource:
hikari:
connection-test-query: SELECT 1 FROM DUAL
minimum-idle: 1
maximum-pool-size: 2
pool-name: some-pool-name
您可以采用您想要的设置并将其直接放在 db 范围内,例如:
spring:
datasource:
db1:
type: com.zaxxer.hikari.HikariDataSource
maximum-pool-size: 2
minimum-idle: 1
pool-name: db1-pool
connection-test-query: SELECT 1 FROM DUAL
jdbc-url: jdbc:mysql://${host1}:${port1}/${db1}
username: ${db1-user}
password: ${db1-pass}
driver-class-name: com.mysql.cj.jdbc.Driver
db2:
type: com.zaxxer.hikari.HikariDataSource
maximum-pool-size: 2
minimum-idle: 1
pool-name: db2-pool
connection-test-query: SELECT 1 FROM DUAL
jdbc-url: jdbc:mysql://${host2}:${port2}/${db2}
username: ${db2-user}
password: ${db2-pass}
driver-class-name: com.mysql.cj.jdbc.Driver
如您所见,池名称和大小设置在该范围内。
然后在一个java配置文件中:
@Configuration
public class AppConfiguration {
....
@Bean("db1")
@ConfigurationProperties(prefix = "spring.datasource.db1")
public DataSource firstDataSource() {
return DataSourceBuilder.create().build();
}
@Bean("db2")
@ConfigurationProperties(prefix = "spring.datasource.db1")
public DataSource secondDataSource() {
return DataSourceBuilder.create().build();
}
}
【讨论】:
hikari前缀突然不见了?