此版本仍在开发中,尚未被视为稳定版本。如需最新稳定版本,请使用 Spring Data REST 5.0.4spring-doc.cadn.net.cn

快速开始

Spring Data REST 本身就是一个 Spring MVC 应用程序,其设计旨在能够以极少的工作量与您现有的 Spring MVC 应用程序集成。现有的(或未来的)服务层只需进行少量额外工作,即可与 Spring Data REST 并行运行。spring-doc.cadn.net.cn

向 Spring Boot 项目添加 Spring Data REST

最简单的入门方式是构建一个 Spring Boot 应用程序,因为 Spring Boot 提供了用于 Spring Data REST 的 starter,并且支持自动配置。以下示例展示了如何在 Spring Boot 项目中使用 Gradle 引入 Spring Data REST:spring-doc.cadn.net.cn

示例 1. 使用 Gradle 的 Spring Boot 配置
dependencies {
  ...
  implementation("org.springframework.boot:spring-boot-starter-data-rest")
  ...
}

以下示例展示了如何使用 Maven 在 Spring Boot 项目中引入 Spring Data REST:spring-doc.cadn.net.cn

示例 2. 使用 Maven 的 Spring Boot 配置
<dependencies>
  ...
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-rest</artifactId>
  </dependency>
  ...
</dependencies>
如果你使用 Spring Boot Gradle 插件Spring Boot Maven 插件,则无需提供版本号。

当你使用 Spring Boot 时,Spring Data REST 会自动配置。spring-doc.cadn.net.cn

将 Spring Data REST 添加到 Gradle 项目中

要将 Spring Data REST 添加到基于 Gradle 的项目中,请将 spring-data-rest-webmvc 工件添加到您的编译时依赖项中,如下所示:spring-doc.cadn.net.cn

dependencies {
  … other project dependencies
  implementation("org.springframework.data:spring-data-rest-webmvc:4.5.11-SNAPSHOT")
}

将 Spring Data REST 添加到 Maven 项目中

要将 Spring Data REST 添加到基于 Maven 的项目中,请将 spring-data-rest-webmvc 工件添加到您的编译时依赖项中,如下所示:spring-doc.cadn.net.cn

<dependency>
  <groupId>org.springframework.data</groupId>
  <artifactId>spring-data-rest-webmvc</artifactId>
  <version>4.5.11-SNAPSHOT</version>
</dependency>

配置 Spring Data REST

要将 Spring Data REST 与现有的 Spring MVC 应用程序一起安装,您需要包含相应的 MVC 配置。 Spring Data REST 的配置定义在一个名为 RepositoryRestMvcConfiguration 的类中,您可以将该类导入到应用程序的配置中。spring-doc.cadn.net.cn

如果你使用 Spring Boot 的自动配置,则无需执行此步骤。当你在依赖列表中包含 spring-boot-starter-data-rest,并且你的应用程序使用了 @SpringBootApplication@EnableAutoConfiguration 注解时,Spring Boot 会自动启用 Spring Data REST。

要自定义配置,请注册一个 RepositoryRestConfigurer,并实现或重写与您使用场景相关的 configure… 方法。spring-doc.cadn.net.cn

请确保您也为所使用的存储库配置了 Spring Data 仓库。有关详细信息,请参阅相应 Spring Data 模块的参考文档。spring-doc.cadn.net.cn

Spring Data REST 的基本设置

本节介绍在配置 Spring Data REST 应用程序时可以调整的基本设置,包括:spring-doc.cadn.net.cn

设置仓库检测策略

Spring Data REST 使用 RepositoryDetectionStrategy 来确定某个仓库是否作为 REST 资源导出。RepositoryDiscoveryStrategies 枚举包含以下值:spring-doc.cadn.net.cn

表1. 仓库检测策略

姓名spring-doc.cadn.net.cn

描述spring-doc.cadn.net.cn

DEFAULTspring-doc.cadn.net.cn

暴露所有公共的仓库接口,但会考虑 exported 注解中的 @(Repository)RestResource 标志。spring-doc.cadn.net.cn

ALLspring-doc.cadn.net.cn

暴露所有仓库,不受类型可见性和注解的影响。spring-doc.cadn.net.cn

ANNOTATEDspring-doc.cadn.net.cn

只有使用 @(Repository)RestResource 注解的仓库才会被暴露,除非它们的 exported 标志被设置为 falsespring-doc.cadn.net.cn

VISIBILITYspring-doc.cadn.net.cn

仅公开标注的仓库会被暴露。spring-doc.cadn.net.cn

更改基础 URI

默认情况下,Spring Data REST 在根 URI '/' 下提供 REST 资源。有多种方式可以更改基础路径。spring-doc.cadn.net.cn

从 Spring Boot 1.2 及更高版本开始,您可以通过在 application.properties 中设置一个属性来更改基础 URI,如下所示:spring-doc.cadn.net.cn

spring.data.rest.basePath=/api

对于 Spring Boot 1.1 或更早版本,或者如果您未使用 Spring Boot,您可以执行以下操作:spring-doc.cadn.net.cn

@Configuration
class CustomRestMvcConfiguration {

  @Bean
  public RepositoryRestConfigurer repositoryRestConfigurer() {

    return new RepositoryRestConfigurer() {

      @Override
      public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config, CorsRegistry cors) {
        config.setBasePath("/api");
      }
    };
  }
}

或者,你可以将自定义的 RepositoryRestConfigurer 实现注册为 Spring Bean,并确保它能被组件扫描所发现,如下所示:spring-doc.cadn.net.cn

@Component
public class CustomizedRestMvcConfiguration extends RepositoryRestConfigurer {

  @Override
  public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config, CorsRegistry cors) {
    config.setBasePath("/api");
  }
}

上述两种方法都将基础路径更改为/apispring-doc.cadn.net.cn

更改其他 Spring Data REST 属性

您可以修改以下属性:spring-doc.cadn.net.cn

表2. Spring Boot 可配置属性

属性spring-doc.cadn.net.cn

描述spring-doc.cadn.net.cn

basePathspring-doc.cadn.net.cn

Spring Data REST 的根 URIspring-doc.cadn.net.cn

defaultPageSizespring-doc.cadn.net.cn

更改单页中返回项数的默认值spring-doc.cadn.net.cn

maxPageSizespring-doc.cadn.net.cn

更改单页中项目的最大数量spring-doc.cadn.net.cn

pageParamNamespring-doc.cadn.net.cn

更改用于选择页面的查询参数的名称spring-doc.cadn.net.cn

limitParamNamespring-doc.cadn.net.cn

更改用于指定每页显示项目数量的查询参数的名称spring-doc.cadn.net.cn

sortParamNamespring-doc.cadn.net.cn

更改用于排序的查询参数的名称spring-doc.cadn.net.cn

defaultMediaTypespring-doc.cadn.net.cn

当未指定时,更改要使用的默认媒体类型spring-doc.cadn.net.cn

returnBodyOnCreatespring-doc.cadn.net.cn

更改在创建新实体时是否应返回响应体spring-doc.cadn.net.cn

returnBodyOnUpdatespring-doc.cadn.net.cn

更改在更新实体时是否应返回响应体spring-doc.cadn.net.cn

启动应用程序

此时,您还必须配置您的密钥数据存储。spring-doc.cadn.net.cn

Spring Data REST 官方支持:spring-doc.cadn.net.cn

以下入门指南可帮助您快速上手并运行起来:spring-doc.cadn.net.cn

这些链接指南介绍了如何为相关数据存储添加依赖项、配置领域对象以及定义仓库。spring-doc.cadn.net.cn

您可以将应用程序作为 Spring Boot 应用运行(使用前面所示的链接),也可以将其配置为传统的 Spring MVC 应用。spring-doc.cadn.net.cn

一般来说,Spring Data REST 不会为特定的数据存储添加功能。这意味着,根据定义,它应该能与任何支持 Repository 编程模型的 Spring Data 项目协同工作。上面列出的数据存储是我们已编写集成测试以验证 Spring Data REST 能与其正常工作的数据存储。

从这一点开始,您可以使用各种选项自定义 Spring Data RESTspring-doc.cadn.net.cn