【最新】Neo4j官方建议Spring Boot 2.4.及以上版本用Neo4j Java Driver代替The Spring Boot starter
Spring Boot 2.4.及以上版本用Neo4j Java Driver代替The Spring Boot Starter
Neo4j官方建议Spring Boot 2.4.及以上版本用Neo4j Java Driver代替The Spring Boot starter
SpringBoot2.*使用Neo4j
起因
其实网上有很多关于SpringBoot集成Neo4j的例子,但是二者结合的方法规则几乎每年都在变,比如org.springframework.data.neo4j.core.schema中没有@NodeEntity,@StartNode,@EndNode等注解,所以网上的一些样例放到现在是行不通的
目前,我在用SpringBoot(Version:2.6.4)集成Neo4j时,遇到了一些问题,也在CSDN上发布了这些问题:
问题1:
springboot集合neo4j引用了org.neo4j的包,报错Required identifier property not found for class
问题2:
用SpringBoot集成neo4j,查询报错Could not find mappable nodes or relationships inside Record
但是没有得到回复。我就去翻了Neo4j官方文档
Neo4j官方文档
Neo4j Java Driver Spring Boot Starter.
进入上面的链接,可以明确看到
The Spring Boot starter is now superseded by the Neo4j Java Driver auto config starting with Spring Boot 2.4. For Spring Boot 2.3. we will still provide support with this starter.
也就是说从Spring Boot 2.4.开始,将用Neo4j Java Driver自动配置取代The Spring Boot starter;但对于Spring Boot 2.3.仍将提供starter的支持
在SpingBoot中使用Neo4j Java Driver
pom.xml依赖
不建议添加Spring Boot starter依赖这样使用Neo4j
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-neo4j</artifactId>
</dependency>
而是使用neo4j-java-driver-spring-boot-starter的依赖(我这里引入的是4.3.6.0版本的)
<dependency>
<groupId>org.neo4j.driver</groupId>
<artifactId>neo4j-java-driver-spring-boot-starter</artifactId>
<version>4.3.6.0</version>
</dependency>
代码样例
官方文档中给出了一段代码样例来说明具体怎么使用Neo4j Java Driver的
package com.example.demo;
import java.util.List;
import org.neo4j.driver.AccessMode;
import org.neo4j.driver.Driver;
import org.neo4j.driver.Session;
import org.neo4j.driver.SessionConfig;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MoviesController {
private final Driver driver;
public MoviesController(Driver driver) {
this.driver = driver;
}
@GetMapping(path = "/movies", produces = MediaType.APPLICATION_JSON_VALUE)
public List<String> getMovieTitles() {
try (Session session = driver.session()) {
return session.run("MATCH (m:Movie) RETURN m ORDER BY m.name ASC")
.list(r -> r.get("m").asNode().get("title").asString());
}
}
}
更多推荐
所有评论(0)