Skip to main content

Micronaut Neo4j

Micronaut 和 Neo4j 之间的集成。

1. 简介

本项目包括 Micronaut Framework 和 Neo4j 之间的集成。

2. 发布历史

你可以在这里找到这个项目的发布列表(包含发布说明):

https://github.com/micronaut-projects/micronaut-neo4j/releases

3. 设置 Neo4j Bolt 驱动

提示

使用 CLI

如果使用 Micronaut CLI 创建项目,请使用 neo4j-bolt 功能在项目中配置 Neo4j Bolt 驱动:

$ mn create-app my-app --features neo4j-bolt

要配置 Neo4j Bolt 驱动,首先应将 neo4j-bolt 模块添加到 classpath 中:

implementation("io.micronaut:micronaut-neo4j-bolt:6.0.1")

然后,在 application.yml 中配置希望与之通信的 Neo4j 服务器的 URI:

配置 neo4j.uri

neo4j:
uri: bolt://localhost
提示

neo4j.uri 设置应采用 Neo4j 文档中连接 URI 部分所描述的格式。

一旦完成上述配置,就可以注入 org.neo4j.driver.v1.Driver bean 的实例,该实例具有同步阻塞 API 和基于 CompletableFuture 的非阻塞 API。

Neo4j 健康检查

micronaut-neo4j-bolt 模块被激活时,Neo4jHealthIndicator 就会被激活,从而产生 /health 端点和 CurrentHealthStatus 接口,用于解析 Neo4j 连接的健康状况。

更多信息,参阅健康端点部分。

4. 配置 Neo4j Bolt 驱动

可以使用 Neo4jBoltConfiguration 类进一步自定义配置的所有选项。

Neo4jBoltConfiguration 还公开了 org.neo4j.driver.v1.Config.ConfigBuilder 类的所有选项。

下面是一个配置示例:

自定义 Bolt 配置

neo4j:
uri: bolt://localhost
maxConnectionPoolSize: 50
connectionAcquisitionTimeout: 30s
提示

你还可以创建一个 BeanCreatedEventListener Bean,并监听 Neo4jBoltConfiguration 的创建,从而进一步以编程方式自定义配置。

5. Neo4j 和测试

通过对 Neo4j 测试工具的依赖,可以嵌入 Neo4j 进行测试:

testImplementation("org.neo4j.test:neo4j-harness")

Neo4j test harness 还需要运行时依赖 javax.annotationjavax.validation

testRuntimeOnly("javax.annotation:javax.annotation-api:1.3.2")
testRuntimeOnly("javax.validation:validation-api:2.0.1.Final")

如果 Neo4j 服务器尚未在配置的端口上运行,则将启动嵌入式版本。

你可以使用 Neo4jBoltConfiguration 提供的 neo4j.embedded 设置来配置嵌入式 Neo4j 服务器的选项。

其中一个有用的选项是 ephemeral,它能确保在测试运行之间清理数据。例如在 application-test.yml 中:

使用 ephemeral

neo4j:
embedded:
ephemeral: true

6. 版本矩阵

  • Micronaut Neo4j 6.x 使用 Neo4j Java Driver 5.x,它增加了对 Java 17 运行时版本的支持。要在 Micronaut 框架项目中使用它,版本不是必需的,因为 BOM 已经暴露了这一点。
implementation("io.micronaut:micronaut-neo4j-bolt")
  • Micronaut Neo4j 5.x 使用 Neo4j 3.x。它支持 Java 8 和 11 运行时版本。要在 Micronaut Framework 项目中使用它,依赖关系需要指定 micronaut-neo4j-bolt 版本。
implementation("io.micronaut:micronaut-neo4j-bolt:5.2.0")

7. 重大变更

本节记录 Micronaut Neo4J 版本之间的重大变更:

Micronaut Neo4J 6.0.1

Micronaut Neo4J 是基于 Neo4j 5.x 的,它与 Micronaut Neo4J 以前版本使用的 Neo4j 3.5.x 有重大变更。

欲了解更多信息,参阅以下 Neo4j 指南:

Neo4J Java 驱动 5.x 增加了对 Java 17 的兼容性

  • Neo4jBoltConfiguration 使用的 GraphDatabase.routingDriver() 方法在 Neo4J 4.4.x 中被弃用,并在 5.x 中被移除。因此,Neo4jBoltConfiguration 现在只接受一个 URI,而之前它接受一个列表作为选项。更多信息,参阅 Neo4J 初始地址解析指南

Neo4J Harness 5.x 增加了对 Java 17 的兼容性

build.gradle

test {
jvmArgs = ['--add-opens', 'java.base/java.nio=ALL-UNNAMED']
}

从 Micronaut Framework 4.0.0 开始,Neo4j Harness 需要运行时依赖 javax.annotationjavax.validation

testRuntimeOnly("javax.annotation:javax.annotation-api:1.3.2")
testRuntimeOnly("javax.validation:validation-api:2.0.1.Final")

8. 仓库

你可以在此仓库中找到此项目的源代码:

https://github.com/micronaut-projects/micronaut-neo4j

英文链接