没有 'java.lang.Class<org.springframework.data.repository.Repository<?, ?>>' 类型的合格 bean
No qualifying bean of type 'java.lang.Class<org.springframework.data.repository.Repository<?, ?>>'
应用程序依赖于许多 spring 数据项目,包括 Neo4j、Solr 和 Jpa。我最近不得不将 spring-data-solr 更新为 Snapshot-3.0.0.M1(以消除另一个依赖冲突)。我认为传递依赖之一导致与 neo4j 发生冲突。如果我从项目中删除 spring-neo4j,错误(见下文)似乎消失了。
我附上了一个重现问题的示例项目。 运行 测试 Class AccountServiceJpaTester.testSaveAccount()
从 here
下载示例项目
原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有可用的 'java.lang.Class>' 类型的符合条件的 bean:预计至少有 1 个符合自动装配候选条件的 bean。依赖注解:{}
在 org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1456)
在 org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1087)
在 org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1049)
在 org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:833)
在 org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:740)
... 60 多个
Spring 数据项目都基于一个共同的基础设施(spring 数据共享)。
如果您在 spring 数据系列中使用多个项目(在您的例子中是 neo4j、solr、jpa),您必须确保它们都基于基础架构的通用版本。
在您的情况下,spring-data-solr 3.0.0 M1
基于 spring-data-commons 2.x
而 JPA 和 Neo4j 使用 spring-data-commons 1.x
。
管理此问题的一个好方法是使用 spring 数据 BOM。这在 spring data homepage 上有解释。
To manage the portfolio, a BOM (Bill of Materials - see this example) is published with a curated set of dependencies on the individual project
如果您需要更新到比 BOM 中包含的版本更新的版本,请确保它们基于相同的基础架构版本。
应用程序依赖于许多 spring 数据项目,包括 Neo4j、Solr 和 Jpa。我最近不得不将 spring-data-solr 更新为 Snapshot-3.0.0.M1(以消除另一个依赖冲突)。我认为传递依赖之一导致与 neo4j 发生冲突。如果我从项目中删除 spring-neo4j,错误(见下文)似乎消失了。
我附上了一个重现问题的示例项目。 运行 测试 Class AccountServiceJpaTester.testSaveAccount()
从 here
下载示例项目原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有可用的 'java.lang.Class>' 类型的符合条件的 bean:预计至少有 1 个符合自动装配候选条件的 bean。依赖注解:{} 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1456) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1087) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1049) 在 org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:833) 在 org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:740) ... 60 多个
Spring 数据项目都基于一个共同的基础设施(spring 数据共享)。 如果您在 spring 数据系列中使用多个项目(在您的例子中是 neo4j、solr、jpa),您必须确保它们都基于基础架构的通用版本。
在您的情况下,spring-data-solr 3.0.0 M1
基于 spring-data-commons 2.x
而 JPA 和 Neo4j 使用 spring-data-commons 1.x
。
管理此问题的一个好方法是使用 spring 数据 BOM。这在 spring data homepage 上有解释。
To manage the portfolio, a BOM (Bill of Materials - see this example) is published with a curated set of dependencies on the individual project
如果您需要更新到比 BOM 中包含的版本更新的版本,请确保它们基于相同的基础架构版本。