2

我使用彈簧啓動應用程序。我通過JDBC DataSource和Repositories從數據庫中選擇數據。 JDBS的某些查詢和存儲庫的一些查詢。我的數據庫配置RAC並有2個實例。我通過129.0.0.2連接到db,但這個URL在129.0.0.3(1 instance) and 129.0.0.4(2instance)之間平衡。所有查詢都以129.0.0.2執行,但我只需要在一個實例上執行一些查詢。我創建了3個數據源:如何在SpringBoot中爲不同的DataSource配置JPA存儲庫?

@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 

但是,當我執行庫查詢將使用什麼數據源?

回答

1

創建兩個配置類是這樣的:

@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註解。

+0

您能分享鏈接到官方文檔或文章推薦此解決方案嗎?還是自己解決? – user5620472

+0

我相信這應該從我所瞭解的Spring Data JPA中得到。沒有自己嘗試。由於從一個Spring Boot應用程序與兩個數據庫交談是一種架構氣味,我懷疑你會發現很多關於它的資源。 – luboskrnac

相關問題