【问题标题】:No qualifying bean of type 'java.lang.Class<org.springframework.data.repository.Repository<?, ?>>'没有“java.lang.Class<org.springframework.data.repository.Repository<?, ?>>”类型的限定bean
【发布时间】:2017-08-23 12:20:45
【问题描述】:

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

我附上了一个重现问题的示例项目。运行测试类 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 更多

【问题讨论】:

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


    【解决方案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 中包含的版本更新的版本,请确保它们基于相同的基础架构版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      • 2018-07-25
      • 2015-12-24
      • 1970-01-01
      • 2016-06-28
      相关资源
      最近更新 更多