次のように私は、私のアプリでは2 DataSource
を初期化したい:セカンダリDataSourceからCrudRepositoryとEntityManagerを挿入する方法は?
@Configuration
public class DataSourceConfig {
@Bean
@Primary
@ConfigurationProperties(prefix="spring.datasource")
public DataSource primaryDataSource() {
return DataSourceBuilder.create().build();
}
@Bean
@ConfigurationProperties(prefix="spring.datasource2")
public DataSource secondaryDataSource() {
return DataSourceBuilder.create().build();
}
}
今、私は次のように二次データソースを明示的に使用したい:
public class SecondaryDbService {
@Autowired
private EntityManager em;
@Autowired
private SecondaryCrudRepository dao;
}
interface SecondaryCrudRepository implements CrudRepository<SecondaryEntity, Long> {
}
以上のように構成されている場合、サービスが使用しますデータソース。
質問:CrudRepository
に「secondaryDataSource」に頼るようにするにはどうすればよいですか?同様に、「secondaryDataSource」からEntityManager
をどのように注入できますか?
Datasources/EntityMangerの場合、 '@修飾子'アノテーションを使用できます。どちらを注入するかを指定するには – Lino
はい、セカンダリの 'EntityManager'または' TransactionManager'の名前はどうですか?セカンダリdsの '@ Bean'を作成するときに、おそらく暗黙のビルドであると思いますか? – membersound
これが役に立っているのかどうかはわかりませんが、[ルーティングデータソース](https://spring.io/blog/2007/01/23/dynamic-datasource-routing/)を見てみてください – Lino