2

스프링 부트 앱을 사용합니다. JDBC DataSource and Repositories에 의해 DB로부터 데이터를 선택합니다. JDBS에 의한 일부 질의와 리포지토리에 의한 일부 질의. 내 DB는 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에서 다른 데이터 소스에 대해 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 
    } 
} 

두 번째 구성 클래스는 분명 유사하지만, 자바 (8) 이후,

BTW 보조 데이터 소스를 사용하는 것이 맞는 것, 또한 두 개의 주석을 가질 수있을 수 있습니다 같은 유형의 유형 (이 경우 두 개의 @EnableJpaRepositories) 따라서 하나의 구성 클래스에서 작동하지만 두 개의 @EnableJpaRepositories 주석이 적용될 수도 있습니다.

+0

이 솔루션을 권장하는 문서 또는 문서에 대한 링크를 공유 할 수 있습니까? 또는 당신 자신 솔루션? – user5620472

+0

이것이 스프링 데이터 JPA에 대해 알고있는 것으로부터 작동해야한다고 생각합니다. 나 자신을 시도하지 않았다. 하나의 Spring Boot 애플리케이션에서 두 개의 데이터베이스로 이야기하는 것은 아키텍처 냄새의 일종이기 때문에, 당신은 그것에 대해 많은 자원을 찾을 수 있을지 의심 스럽다. – luboskrnac

관련 문제