如何使用基于类的配置设置具有不同基础包、transactionManagerRef 的多个 Spring Data JPA?
Posted
技术标签:
【中文标题】如何使用基于类的配置设置具有不同基础包、transactionManagerRef 的多个 Spring Data JPA?【英文标题】:How to setup multiple Spring Data JPA with different base-packages,transactionManagerRef using class based configuration? 【发布时间】:2020-04-03 23:29:30 【问题描述】:在我们当前基于 XML 的配置中,我们设置了多个存储库,如下所示:
<jpa:repositories base-package="com.grc.riskanalysis.repository.master" transaction-manager-ref="transactionManager"
entity-manager-factory-ref="entityManagerFactory"/>
<jpa:repositories base-package="com.grc.riskanalysis.repository.slave" transaction-manager-ref="transactionManager2"
entity-manager-factory-ref="dynamicEntityManagerFactory"/>
我正在尝试将此 XML 配置迁移到基于类的配置,但它不允许有多个 @EnableJpaRepositories 注释。如何通过基于类(基于注释)的配置来实现这一点?
【问题讨论】:
您可以拥有任意数量的@EnableJpaRepositories
注释,只需将它们放在单独的@Configuration
类中即可。这样,您还可以为 datasource/txmanager/entitymanagerfactory 分离不同的 JPA 配置。
是的,我在下面的链接中找到了相同的解决方案(在我的回答中提到)
【参考方案1】:
@EnableJpaRepositories
有一个名为basePackages
的参数。它接受一个字符串数组,您可以使用它来添加您的包。
类似下面的东西会做
@EnableJpaRepositories(basePackages = "package1", "package2")
【讨论】:
【参考方案2】:我从下面两篇文章中找到了答案,似乎需要为每个 JPA 编写单独的配置类。
baeldung
Enable Multiple JPA Repositories
【讨论】:
以上是关于如何使用基于类的配置设置具有不同基础包、transactionManagerRef 的多个 Spring Data JPA?的主要内容,如果未能解决你的问题,请参考以下文章
如何拥有两个具有不同命名空间和相同 JAXB 类的不同端点?
如何使用基于类的视图在同一模板中使用两个不同的 Django 表单