2017-07-07 16 views
1

私は、各JpaRepositoriesに特定のデータソースを割り当てることを試みている2つのデータソースを持っています。私は春のブートフレームワークを使用しています。プライマリデータソースは約90%の時間使用されますが、セカンダリデータソースは約10%使用されるので、プライマリデータソースにデフォルトし、必要な場合にのみセカンダリデータソースを割り当ててください。私はここでドキュメントhttps://docs.spring.io/spring-boot/docs/current/reference/html/howto-data-access.htmlを使用してみましたが、私は正確に私が必要と思ういけない。すべてのヒントは素晴らしいだろう!スプリングブート特定のデータソースをJpaRepositoryに割り当てます。

spring.datasource.configuration.url=jdbc:postgresql://localhost:5432/mydatabase 
spring.datasource.configuration.username=dockerusername 
spring.datasource.configuration.password=dockerpassword 
spring.datasource.configuration.driver-class-name=org.postgresql.Driver 

spring.datasource.cached.url=jdbc:hsqldb:mem:main 
spring.datasource.cached.driver-class-name=org.hsqldb.jdbc.JDBCDriver 

spring.datasource.initialize=false 
spring.jpa.database=default 
spring.jpa.hibernate.ddl-auto=update 

設定ファイル

@Configuration 
@ComponentScan({"com.praeses.gov"}) 
public class Config { 
@Bean 
@ConfigurationProperties("spring.datasource.configuration") 
public DataSourceProperties configDataSourceProperties() { 
    return new DataSourceProperties(); 
} 

@Bean 
@ConfigurationProperties("spring.datasource.configuration") 
public DataSource configDataSource() { 
    return configDataSourceProperties().initializeDataSourceBuilder().build(); 
} 

@Bean 
@Primary 
@ConfigurationProperties("spring.datasource.cached") 
public DataSourceProperties cachedDataSourceProperties() { 
    return new DataSourceProperties(); 
} 

@Bean 
@Primary 
@ConfigurationProperties("spring.datasource.cached") 
public DataSource cachedDataSource() { 
return cachedDataSourceProperties().initializeDataSourceBuilder().build(); 
    } 

あなたが同様の行に何かを行うことができます主なデータソースを使用してリポジトリ

@Qualifier("spring.datasource.cached") 
@Repository("spring.datasource.cached") 
public interface GeoitemRepository extends JpaRepository<Geoitem, String> { 
} 

二次データソースを使用してリポジトリ

@Qualifier("spring.datasource.configuration") 
@Repository("spring.datasource.configuration") 
public interface GeoitemhistoryRepository extends JpaRepository<Geoitemhistory, String> { 
} 

答えて

0

〜する低リンク。 1つではなく2つの設定ファイルを作成し(各データソースごとに1つずつ)、メインアプリケーションに両方の設定ファイルを追加してください。

また、プロパティファイルに、以下のように与える:

datasource.local.url= 
datasource.local.driver-class-name= 
datasource.local.username= 
datasource.local.password= 

datasource.primary.url= 
datasource.primary.driver-class-name= 
datasource.primary.username= 
datasource.primary.password= 

はまた、一次データソースのための設定ファイルにLocalContainerEntityManagerFactoryBeanplatformTransactionManagerから@Primary注釈を与えます。

詳細については、この回答を参照してください。 https://stackoverflow.com/a/44971911/6775742

関連する問題