Spring Data Neo4j 4.x和sdn-university:Neo4jTemplate没有autowire'ing

时间:2015-08-05 16:24:20

标签: java spring spring-data-neo4j spring-data-neo4j-4

我正在将我的应用程序(在sdn-university之后紧密建模)从Spring Data Neo4j 3.x升级到Spring Data Neo4j 4.0.0.BUILD-SNAPSHOT。添加自动装配的Neo4jTemplate实例时,启动时会抛出以下异常:

  

...引起:   org.springframework.beans.factory.BeanCreationException:不能   autowire字段:私有   org.springframework.data.neo4j.template.Neo4jTemplate   school.service.UserServiceImpl.template;嵌套异常是   org.springframework.beans.factory.NoSuchBeanDefinitionException:没有   合格的bean类型   找到[org.springframework.data.neo4j.template.Neo4jTemplate]   依赖:预计至少有1个bean有资格成为autowire   这种依赖的候选人。依赖注释:   {@ org.springframework.beans.factory.annotation.Autowired(所需=真)}     在   org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:571)     在   org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)     在   org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)     ......还有21个......

为了验证结果,我采用了最新的sdn-university - 现在也使用了来自https://github.com/neo4j-examples/sdn4-university的SDN4.x 4.0.0.BUILD-SNAPSHOT并修改了StudentServiceImpl包括一个自动装配的Neo4jTemplate实例。在发出mvn clean spring-boot:run -U后,我们会在应用程序中看到错误。

需要将哪些内容更改为sdn-university才能成功使用Neo4jTemplate?

1 个答案:

答案 0 :(得分:3)

这在SDN4中不起作用的原因是因为Neo4jTemplate及其界面Neo4jOperations都使用@Repository进行了注释。因此,Spring代表Neo4jTemplate类,因为类型不匹配而无法正确自动连接。

最好的方法是针对Neo4jOperations接口而不是Neo4jTemplate类进行编码。在SDN4的最终版本中是否会出现这种情况仍然尚未确定,尽管我总是喜欢个人编码接口。

您可能还需要声明Neo4jOperations作为bean工厂方法的返回类型:

@Bean
public Neo4jOperations neo4jTemplate() throws Exception {
    return new Neo4jTemplate(getSession());
}