【最新】Neo4j官方建议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
    • 起因
    • Neo4j官方文档
    • 在SpingBoot中使用Neo4j Java Driver
      • pom.xml依赖
      • 代码样例

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.

进入上面的链接,可以明确看到【最新】Neo4j官方建议Spring Boot 2.4.及以上版本用Neo4j Java Driver代替The Spring Boot starter_第1张图片
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.bootgroupId>
    <artifactId>spring-boot-starter-data-neo4jartifactId>
dependency>

而是使用neo4j-java-driver-spring-boot-starter的依赖(我这里引入的是4.3.6.0版本的)

<dependency>
    <groupId>org.neo4j.drivergroupId>
    <artifactId>neo4j-java-driver-spring-boot-starterartifactId>
    <version>4.3.6.0version> 
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());
		}
	}
}

你可能感兴趣的:(Spring,Boot,spring,boot,java,spring,知识图谱)