база данных h2 вместе с другим источником данных - PullRequest
1 голос
/ 01 июля 2019

Я использую базу данных h2 с весенней загрузкой. Базовая конфигурация

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.hibernate.ddl-auto=create
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console

Все идет гладко.

Теперь я хочу определить другой компонент источника данных в моем приложении

    @Bean
    @Qualifier("oracleDatasource")
    public DataSource oracleDataSource(@Qualifier("oracleDBProperties") DataSourceProperties oracleDBProperties) {
        return oracleDBProperties.initializeDataSourceBuilder().build();
    }

    @Bean
    @ConfigurationProperties(prefix = "spring.oracle.datasource")
    public DataSourceProperties oracleDBProperties() {
        return new DataSourceProperties();
    }
spring.oracle.datasource.url=jdbc:oracle:thin:url:db
spring.oracle.datasource.username=test
spring.oracle.datasource.password=test
spring.oracle.datasource.driver-class-name=oracle.jdbc.OracleDriver

Источник данных oracle успешно инициализируется, но на этот раз конфигурация h2 игнорируется. Похоже, что определение другого компонента DataSource подавляет автоконфигурацию пружины для h2.

Как я могу избежать этого подавления или есть способ определить h2 так же, как я сделал для оракула?

Я попытался выполнить тот же тип конфигурации bean-компонентов для h2, что и для оракула, но, похоже, он не работает.

UPDATE

Исправлена ​​проблема со следующим

    @Bean
    @Primary
    @ConfigurationProperties(prefix = "spring.h2.datasource")
    public DataSourceProperties h2DBProperties() {
        return new DataSourceProperties();
    }

    @Bean
    @Primary
    @Qualifier("h2Datasource")
    public DataSource h2DataSource(@Qualifier("h2DBProperties") DataSourceProperties h2DBProperties) {
        return h2DBProperties.initializeDataSourceBuilder().build();
    }
spring.h2.datasource.url=jdbc:h2:mem:testdb
spring.h2.datasource.driverClassName=org.h2.Driver
spring.h2.datasource.username=sa
spring.h2.datasource.password=

Добавление аннотации @Primary не позволяло ничему ее подавлять. Хотя все еще не уверен, что это правильное решение.

1 Ответ

0 голосов
/ 01 июля 2019

Некоторое время назад я достиг того же.

http://www.kode12.com/kode12/spring-boot/spring-boot-working-multiple-sql-database/

...