Несколько источников данных - PullRequest
0 голосов
/ 06 февраля 2019

Я подключил два источника данных в следующих примерах для базы данных Oracle:

@ Открытый класс конфигурации SpringConfigurationProperties extends 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 требуется один компонент, но 2 были найдены

1 Ответ

0 голосов
/ 06 февраля 2019

Я думаю, что мог бы воспроизвести эту ошибку:

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

Похоже, весенняя загрузка найдена 2 DataSourceProperties для конструктора DataSourceInitializerInvoker, я не уверен почему, потому что у меня есть только одинкласс, который у вас есть, но когда я отмечаю свою конфигурацию как основную, она работает.

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

}

Дополнительно для комментариев. Свойства:

spring.datasource.url = jdbc: mysql: // localhost / test
spring.datasource.username = test
spring.datasource.password = test
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

...