Spring Data Neo4j 的构建块

概述

SDN 由可组合的构建块组成。它构建在 Neo4j Java Driver 之上。Java driver 的实例通过 Spring Boot 的自动配置本身提供。Driver 的所有配置选项都可以在命名空间 spring.neo4j 中访问。Driver bean 提供命令式、异步和响应式方法与 Neo4j 交互。

您可以在该 bean 上使用 driver 提供的所有事务方法,例如自动提交事务事务函数和非托管事务。请注意,这些事务与正在进行的 Spring 事务并非紧密关联。

与 Spring Data 以及 Spring 的平台或响应式事务管理器的集成始于 Neo4j Client。该 Client 是 SDN 的一部分,通过一个单独的 starter spring-boot-starter-data-neo4j 进行配置。该 starter 的配置命名空间是 spring.data.neo4j

该 Client 是映射无关的。它不了解您的领域类,您负责将结果映射到适合您需求的对象。

下一个更高层次的抽象是 Neo4j Template。它了解您的领域,您可以使用它来查询任意领域对象。在领域类数量众多或有自定义查询且不想为每个查询创建额外的 repository 抽象的场景中,template 非常有用。

最高层次的抽象是 Spring Data repository。

SDN 的所有抽象都提供了命令式和响应式风格。不建议在同一应用程序中混合使用这两种编程风格。响应式基础设施需要 Neo4j 4.0+ 数据库。

image$sdn buildingblocks
图 1. SDN 构建块

Template 机制类似于其他存储的 templates。有关其更多信息,请参阅我们的常见问题。Neo4j Client 本身是 SDN 特有的。您可以在附录中找到其文档。

在包层面

描述

org.springframework.data.neo4j.config

此包包含与配置相关的支持类,可用于应用程序特定的、带注解的配置类。如果您不依赖 Spring Boot 的自动配置,抽象基类会很有帮助。此包提供了一些额外的注解来启用审计。

org.springframework.data.neo4j.core

此包包含创建可执行查询的命令式或响应式 Client 的核心基础设施。标记为 @API(status = API.Status.STABLE) 的包可以安全使用。核心包提供了 Client 和 Template 的命令式和响应式变体。

org.springframework.data.neo4j.core.convert

提供 SDN 支持的一组简单类型。Neo4jConversions 允许引入额外的自定义转换器。

org.springframework.data.neo4j.core.support

此包提供了一些在您的领域中可能有用的支持类,例如指示某些事务可以重试的谓词,以及额外的转换器和 ID 生成器。

org.springframework.data.neo4j.core.transaction

包含将非托管 Neo4j 事务转换为 Spring 托管事务的核心基础设施。将命令式和响应式 TransactionManager 作为 Neo4jTransactionManagerReactiveNeo4jTransactionManager 公开。

org.springframework.data.neo4j.repository

此包提供 Neo4j 命令式和响应式 repository API。

org.springframework.data.neo4j.repository.config

Neo4j 特定 repositories 的配置基础设施,特别是用于启用命令式和响应式 Spring Data Neo4j repositories 的专用注解。

org.springframework.data.neo4j.repository.support

此包提供了一些公共支持类,用于构建自定义命令式和响应式 Spring Data Neo4j repository 基类。这些支持类与 SDN 本身使用的类相同。