java - 使用带有 JDBC Bolt 驱动程序的 Neo4j 嵌入式数据库的 Spring Boot 测试
问题描述
是否可以像使用 H2 内存数据库模拟 Oracle 数据库一样连接到嵌入式 Neo4j 数据库?
我试过这样做:
final BoltConnector boltConnector = new BoltConnector("bolt");
graphDb = new GraphDatabaseFactory()
.newEmbeddedDatabaseBuilder(DB_PATH)
.setConfig(boltConnector.type, BOLT.name())
.setConfig(boltConnector.enabled, TRUE)
.setConfig(boltConnector.listen_address, listenAddress("127.0.0.1", 7688))
.setConfig(boltConnector.encryption_level, DISABLED.name())
.setConfig(GraphDatabaseSettings.auth_enabled, FALSE)
.newGraphDatabase();
然后使用带有以下 spring.datasource 配置的 JDBC Bolt 驱动程序发出请求:
spring:
profiles: test
datasource:
driver-class-name: org.neo4j.jdbc.bolt.BoltDriver
url: jdbc:neo4j:bolt://127.0.0.1:7688/?nossl
但我总是收到以下错误:
Unable to connect to 127.0.0.1:7688, ensure the database is running and that there is a working network connection to it.
当然,当我使用graphDb
实例并针对它执行请求时,嵌入式数据库会起作用。但我希望我的应用程序能够像连接到远程 Neo4j 数据库时那样连接到嵌入式数据库。这是为了测试目的。
解决方案
我终于 RTFM ......
我有以下依赖项pom.xml
:
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j</artifactId>
<version>3.4.0</version>
</dependency>
然后我发现了这个:https ://neo4j.com/docs/java-reference/current/tutorials-java-embedded/#tutorials-java-embedded-bolt 该文档有点过时了,因为它使用了不推荐使用的配置。但他们解释了这一点:
Neo4j 浏览器和官方 Neo4j 驱动程序使用 Bolt 数据库协议与 Neo4j 通信。默认情况下,Neo4j Embedded 不公开 Bolt 连接器,但您可以启用一个。这样做允许您将服务 Neo4j Browser 连接到您的嵌入式实例。
他们明确了要使用的正确依赖项是:
<dependency>
<groupId>org.neo4j</groupId>
<artifactId>neo4j-bolt</artifactId>
<version>3.4.0</version>
</dependency>
推荐阅读
- php - 在 laravel 中连接远程 REDIS 服务器
- vue.js - 缺少依赖项:./node_modules/node-pre-gyp/lib/info.js 中的 aws-sdk
- java - Android 上的 Fortify 问题:动态代码评估:不安全的反序列化
- java - 没有静态方法 encodeBase64String([B)Ljava/lang/String; 在 Lorg/apache/commons/codec/binary/Base64 类中;或其超类
- c - 如何在 _start 中使用 argv?
- c# - 来自 API 的 JsonConvert.DeserializeObject 对象,使用 Webclient 可能是 2 种对象类型之一
- python - 如何让程序在 Python 中完成后重新运行
- html - 全新的 CSS,无法弄清楚如何为我的每个 html 段落正确编码不同的类/属性值
- django-rest-framework - 类型错误:+= 不支持的操作数类型:“datetime.timedelta”和“NoneType”
- html - 如何使 html 灯箱响应?