我正在开发一个项目,其中一个通用模块被抽象化(COMMON)并且它使用 JPA 存储库。
然后我让 uber jar COMMON 模块开始在另一个 Spring Boot 项目(CLIENT)中使用,该项目也使用自己的 JPA 存储库。
我需要的 COMMON 和 CLIENT 的配置是相同的。
然而问题是..
如果我在 CLIENT 的配置中提到了 COMMON 的存储库和实体包,则 CLIENT 存储库的 bean 没有被构造。
@EnableJpaRepositories(basePackages = {"COMMON_REPO, CLIENT_REPO" }) //failing to construct CLIENT repo bean
如果我使用与客户端相同的数据源凭据为 COMMON 定义新配置,则不会创建 COMMON 存储库的 bean。
//Configuration-1
@EnableJpaRepositories(basePackages = {"COMMON_REPO" })...
//Configuraton-2 same as Configuration-1
@EnableJpaRepositories(basePackages = {"CLIENT_REPO" })...
// COMMON repo bean is not getting constructed.
Error: Error creating bean with name 'workflowRepository': Cannot create inner bean '(inner bean)#60410fb3' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#60410fb3': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' available
Sprint 启动版本:2.0.4.RELEASE