簡體   English   中英

Spring Data Neo4j 4.x和sdn-university:Neo4jTemplate沒有自動接線

[英]Spring Data Neo4j 4.x and sdn-university: Neo4jTemplate no autowire'ing

我正在將我們的應用程序從Spring Data Neo4j 3.x升級到Spring Data Neo4j 4.0.0.BUILD-SNAPSHOT,該應用程序在sdn-university之后進行了建模。 當添加自動裝配的Neo4jTemplate實例時,在啟動時會引發以下異常:

...由以下原因引起:org.springframework.beans.factory.BeanCreationException:無法自動連線字段:私有org.springframework.data.neo4j.template.Neo4jTemplate school.service.UserServiceImpl.template; 嵌套的異常是org.springframework.beans.factory.NoSuchBeanDefinitionException:沒有找到類型為[org.springframework.data.neo4j.template.Neo4jTemplate]的合格Bean作為依賴項:至少應有1個可作為該依賴項的自動裝配候選的bean。 依賴注釋:在org.springframework的org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:571)的{@ org.springframework.beans.factory.annotation.Autowired(required = true)}。 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)上的beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)...更多21 ...

為了驗證結果,我采用了最新的sdn-university現在也使用SDN4.x 4.0.0.BUILD-SNAPSHOT-來自https://github.com/neo4j-examples/sdn4-university並修改了StudentServiceImpl,使其包含自動裝配的Neo4jTemplate實例。 發出mvn clean spring-boot:run -Umvn clean spring-boot:run -U我們的應用程序中看到的錯誤。

要成功使用Neo4jTemplate,需要將什么更改為sdn-university

這不SDN4工作的原因是因為Neo4jTemplate及其接口, Neo4jOperations ,都與注釋@Repository 因此,Spring會創建Neo4jTemplate類的代理,該類由於類型不匹配而無法正確自動連接。

最好的方法是針對Neo4jOperations接口而不是Neo4jTemplate類進行Neo4jTemplate 盡管最終我還是會個人支持針對接口進行編碼,但仍不確定是否可以在SDN4的最終版本中實現。

您可能還需要聲明Neo4jOperations作為bean工廠方法的返回類型:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM