Spring数据重用Repository类

时间:2016-11-17 19:51:42

标签: spring-boot spring-data spring-data-jpa

我有spring-boot,spring-jpa,spring-amqp:

的以下场景

我的应用程序负责将数据复制到不同的数据库,但是使用相同的实体,我必须根据即将发布的兔子amqp数据在运行时决定我必须存储/更新数据的数据库。

我知道spring-jpa我们可以拥有多个数据源,而使用 @EnableJpaRepositories ,我们可以通过指定基本包来选择存储库类:

First DatabaseConfig

@Configuration
@EnableJpaRepositories(basePackages = "com.example.repo1", entityManagerFactoryRef = "firstEntityManagerFactory",
transactionManagerRef = "firstTransactionManager")
public class FirstDatabaseConfig
....

package com.example.repo1;

@Repository
public interface MyRepository extends JpaRepository<MyEntity, Long> {


Second DatabaseConfig

@Configuration
@EnableJpaRepositories(basePackages = "com.example.repo2", entityManagerFactoryRef = "secondEntityManagerFactory",
transactionManagerRef = "secondTransactionManager")
public class SecondDatabaseConfig
....


package com.example.repo2;

@Repository
public interface MyRepository2 extends JpaRepository<MyEntity, Long> {

这对我有用,但我想重用存储库类,而不是为每个必须保留的数据库创建一个存储库类。

这可能吗?

1 个答案:

答案 0 :(得分:0)

https://spring.io/blog/2007/01/23/dynamic-datasource-routing/

AbstractRoutingDataSource应该允许您在使用相同的存储库时完成此操作。