多个数据源

时间:2019-02-06 16:44:53

标签: java oracle spring-boot datasource

我已经为Oracle DB连接了以下示例的两个数据源:

@配置 公共类SpringConfigurationProperties扩展了DataSourceProperties {

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

@Bean
@Qualifier("primaryDatasource")
public NamedParameterJdbcTemplate primaryNpJdbcTemplate(DataSource dataSource) {
    return new NamedParameterJdbcTemplate(dataSource);
}

@Bean
@ConfigurationProperties(prefix="gps.bulk.load.database")
public DataSource bulkLoadDatasource() {
    return DataSourceBuilder.create().build();
}

@Bean
@Qualifier("bulkLoadDatasource")
public NamedParameterJdbcTemplate bulkLoadNpJdbcTemplate(DataSource dataSource) {
    return new NamedParameterJdbcTemplate(dataSource);
}

}

但是我在启动时遇到以下错误:

org.springframework.boot.autoconfigure.jdbc.DataSourceInitializerInvoker需要一个bean,但是找到了2个

1 个答案:

答案 0 :(得分:0)

我认为我可以重现此错误:

Parameter 1 of constructor in org.springframework.boot.autoconfigure.jdbc.DataSourceInitializerInvoker required a single bean, but 2 were found: - myConfig: defined in file [...MyConfig.class] - spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties: defined in null

似乎像spring boot那样,为构造函数DataSourceInitializerInvoker找到了2个DataSourceProperties,我不确定为什么,因为我只有一个类,但是当我将Configuration标记为Primary时,它可以工作。

@Configuration 
@Primary
public class SpringConfigurationProperties extends DataSourceProperties {
...

}

注释.properties的附加内容:

spring.datasource.url = jdbc:mysql:// localhost / test
spring.datasource.username = test
spring.datasource.password =测试
spring.datasource.driver-class-name = test

gps.bulk.load.database.url = test
gps.bulk.load.database.username = test
gps.bulk.load.database.password = test
gps.bulk.load.database.driver-class-name = test