2 Hikari CP具有不同的数据源配置?

时间:2018-01-08 15:46:11

标签: spring-boot db2 spring-data-jpa informix hikaricp

有没有人在Spring启动应用程序中成功配置了两个具有不同数据源的hikari连接池?我如何使用application.properties?

1 个答案:

答案 0 :(得分:2)

我知道这是很久以前问过的,但我认为这可能会对其他人有所帮助。 另外,我不认为上述提到的“可能重复”可以回答问题。

我在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();
    }
}