3

スプリングブートアプリを使用しています。JDBC DataSource と Repositories で DB からデータを選択します。JDBS によるいくつかのクエリとリポジトリによるいくつかのクエリ。私のDBはRACを構成し、2つのインスタンスがあります。私は で db に接続し129.0.0.2ますが、この URL は129.0.0.3(1 instance) and 129.0.0.4(2instance). すべてのクエリは実行され129.0.0.2ますが、一部のクエリは 1 つのインスタンスでのみ実行する必要があります。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 を使用するのでしょうか?

4

1 に答える 1

1

次のような 2 つの構成クラスを作成します。

@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
  }
}

2番目の構成クラスは明らかに似ていますが、セカンダリデータソースを使用するように調整されています

@EnableJpaRepositoriesところで、Java 8 以降、同じクラスに2 つの型の注釈 (この場合は 2 つ) を持つことも可能です。したがって、1 つの構成クラスでも機能する可能性がありますが、2 つの@EnableJpaRepositories注釈があります。

于 2017-01-11T15:03:52.587 に答える