Spring 引导应用程序中的多个数据源

multiple datasources in Spring Boot application

我正在尝试使用两个数据库连接 w/in 一个 Spring 引导 (v1.2.3) 应用程序,如文档中所述 (http://docs.spring.io/spring-boot/docs/1.2.3.RELEASE/reference/htmlsingle/#howto-two-datasources.

问题似乎是辅助数据源正在使用主数据源的属性构建。

有人可以指出我在这里遗漏了什么吗?

@SpringBootApplication
class Application {
    @Bean
    @ConfigurationProperties(prefix="spring.datasource.secondary")
    public DataSource secondaryDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean
    public JdbcTemplate secondaryJdbcTemplate(DataSource secondaryDataSource) {
        return new JdbcTemplate(secondaryDataSource)
    }

    @Bean
    @Primary
    @ConfigurationProperties(prefix="spring.datasource.primary")
    public DataSource primaryDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "primaryJdbcTemplate")
    public JdbcTemplate jdbcTemplate(DataSource primaryDataSource) {
        return new JdbcTemplate(primaryDataSource)
    }

    static void main(String[] args) {
        SpringApplication.run Application, args
    }
}

application.properties:

spring.datasource.primary.url=jdbc:oracle:thin:@example.com:1521:DB1
spring.datasource.primary.username=user1
spring.datasource.primary.password=
spring.datasource.primary.driverClassName=oracle.jdbc.OracleDriver

spring.datasource.secondary.url=jdbc:oracle:thin:@example.com:1521:DB2
spring.datasource.secondary.username=user2
spring.datasource.secondary.password=
spring.datasource.secondary.driverClassName=oracle.jdbc.OracleDriver

两个 JdbcTemplate bean 都将使用主 DataSource 创建。您可以使用 @Qualifier 将辅助 DataSource 注入辅助 JdbcTemplate。或者,您可以在创建 JdbcTemplate bean 时直接调用 DataSource 方法。