我有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> {
这对我有用,但我想重用存储库类,而不是为每个必须保留的数据库创建一个存储库类。
这可能吗?
答案 0 :(得分:0)
https://spring.io/blog/2007/01/23/dynamic-datasource-routing/
AbstractRoutingDataSource
应该允许您在使用相同的存储库时完成此操作。