我正在将我的应用程序(在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?
答案 0 :(得分:3)
这在SDN4中不起作用的原因是因为Neo4jTemplate
及其界面Neo4jOperations
都使用@Repository
进行了注释。因此,Spring代表Neo4jTemplate
类,因为类型不匹配而无法正确自动连接。
最好的方法是针对Neo4jOperations
接口而不是Neo4jTemplate
类进行编码。在SDN4的最终版本中是否会出现这种情况仍然尚未确定,尽管我总是喜欢个人编码接口。
您可能还需要声明Neo4jOperations
作为bean工厂方法的返回类型:
@Bean
public Neo4jOperations neo4jTemplate() throws Exception {
return new Neo4jTemplate(getSession());
}