没有符合条件的bean&#39; java.lang.Class <org.springframework.data.repository.repository <?,?=“”>&gt;&#39;

时间:2017-03-29 20:10:54

标签: solr neo4j spring-data spring-data-neo4j spring-data-solr

应用程序依赖于许多Spring数据项目,包括Neo4j,Solr和Jpa。我最近不得不将spring-data-solr更新为Snapshot-3.0.0.M1(以消除另一个依赖冲突)。我认为其中一个传递依赖导致与neo4j的冲突。如果我从项目中删除spring-neo4j,则错误(见下文)似乎消失了。

我附加了一个重新创建问题的示例项目。运行测试类AccountServiceJpaTester.testSaveAccount()

here下载示例项目

引起:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有类型&#39; java.lang.Class&gt;&#39;的限定bean可用:预计至少有1个豆有资格作为autowire候选者。依赖注释:{}     在org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1456)     at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1087)     at 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多个

1 个答案:

答案 0 :(得分:1)

Spring数据项目都基于通用基础架构(spring data commons)。 如果您在spring数据系列中使用多个项目(在您的情况下为neo4j,solr,jpa),则必须确保它们都基于基础结构的通用版本。

在您的情况下,spring-data-solr 3.0.0 M1基于spring-data-commons 2.x,而JPA和Neo4j使用spring-data-commons 1.x

管理此方法的一个好方法是使用弹簧数据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中包含的版本,请确保它们基于相同的基础架构版本。