簡體   English   中英

如何在 SpringBoot 中為不同的數據源配置 JPA 存儲庫?

[英]How can I configure JPA repositories for different DataSources in SpringBoot?

我使用彈簧啟動應用程序。 我通過 JDBC 數據源和存儲庫從數據庫中選擇數據。 一些 JDBC 查詢和一些存儲庫查詢。 我的數據庫配置 RAC 並有 2 個實例。 我通過129.0.0.2連接到數據庫,但此 URL 在129.0.0.3(1 instance) and 129.0.0.4(2instance)之間平衡。 所有查詢都使用129.0.0.2執行,但有些查詢我只需要在一個實例上執行。 我創建了 3 個數據源:

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

    @Bean(name = "second")
    @ConfigurationProperties(prefix = "spring.secondDatasource")
    public DataSource secondaryDataSource() {
        return DataSourceBuilder.create().build();
    }

    @Bean(name = "three")
    @ConfigurationProperties(prefix = "spring.threeDatasource")
    public DataSource threeDataSource() {
        return DataSourceBuilder.create().build();
    }

並在 application.properties 中配置它們。 然后我可以寫

@Qualifier("primary")DataSource dataSource

或者

@Qualifier("second")DataSource dataSource

但是當我執行存儲庫查詢時會使用什么 DataSource 呢?

創建兩個配置類,如下所示:

@Configuration
@EnableJpaRepositories(basePackages = "your.package.repositories.datasource1", 
   entityManagerFactoryRef = entityManagerFactory1)
class DataSource1Configuration {

  @Bean
  public EntityManagerFactory entityManagerFactory1(@Qualifier("primary") DataSource primary) {
    // … create entity manager factory based on primary source
  }
}

第二個配置類顯然是相似的,但適合使用輔助數據源

順便說一句,從 Java 8 開始,在同一個類上也可能有兩個類型的注釋(在這種情況下是兩個@EnableJpaRepositories )。 所以它也可以使用一個配置類,但使用兩個@EnableJpaRepositories注釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM