入门

Spring Data REST 本身就是一个 Spring MVC 应用,其设计旨在能够轻松集成到您现有的 Spring MVC 应用中。现有(或未来)的服务层可以与 Spring Data REST 并行运行,只需少量额外工作。

将 Spring Data REST 添加到 Spring Boot 项目

最简单的入门方法是构建一个 Spring Boot 应用,因为 Spring Boot 提供了 Spring Data REST starter 并使用自动配置。以下示例展示了如何使用 Gradle 将 Spring Data REST 包含到 Spring Boot 项目中。

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

以下示例展示了如何使用 Maven 将 Spring Data REST 包含到 Spring Boot 项目中。

示例 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 Data REST 添加到 Gradle 项目

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

dependencies {
  … other project dependencies
  compile("org.springframework.data:spring-data-rest-webmvc:4.4.5")
}

将 Spring Data REST 添加到 Maven 项目

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

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

配置 Spring Data REST

要将 Spring Data REST 安装在您现有 Spring MVC 应用旁边,您需要包含相应的 MVC 配置。Spring Data REST 的配置定义在一个名为 RepositoryRestMvcConfiguration 的类中,您可以将该类导入到您的应用配置中。

如果您使用 Spring Boot 的自动配置,则无需此步骤。当您包含 spring-boot-starter-data-rest 并在依赖项列表中标记您的应用为 @SpringBootApplication@EnableAutoConfiguration 时,Spring Boot 会自动启用 Spring Data REST。

要自定义配置,请注册一个 RepositoryRestConfigurer Bean,并实现或覆盖与您的用例相关的 configure… 方法。

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

Spring Data REST 的基本设置

本节介绍了配置 Spring Data REST 应用时可以操作的基本设置,包括:

设置仓库检测策略

Spring Data REST 使用 RepositoryDetectionStrategy 来确定仓库是否作为 REST 资源导出。RepositoryDiscoveryStrategies 枚举包含以下值:

表 1. 仓库检测策略

名称

描述

DEFAULT

暴露所有公共仓库接口,但会考虑 @(Repository)RestResourceexported 标志。

ALL

暴露所有仓库,不受类型可见性和注解的影响。

ANNOTATED

仅暴露使用 @(Repository)RestResource 注解的仓库,除非其 exported 标志设置为 false

VISIBILITY

仅暴露使用注解的公共仓库。

更改基本 URI

默认情况下,Spring Data REST 在根 URI '/' 提供 REST 资源。有多种方法可以更改基本路径。

使用 Spring Boot 1.2 及更高版本,您可以通过在 application.properties 中设置一个属性来更改基本 URI,如下所示:

spring.data.rest.basePath=/api

使用 Spring Boot 1.1 或更早版本,或者如果您未使用 Spring Boot,您可以执行以下操作:

@Configuration
class CustomRestMvcConfiguration {

  @Bean
  public RepositoryRestConfigurer repositoryRestConfigurer() {

    return new RepositoryRestConfigurer() {

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

另外,您可以将 RepositoryRestConfigurer 的自定义实现注册为 Spring Bean,并确保它能被组件扫描检测到,如下所示:

@Component
public class CustomizedRestMvcConfiguration extends RepositoryRestConfigurer {

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

上述两种方法都将基本路径更改为 /api

更改其他 Spring Data REST 属性

您可以修改以下属性:

表 2. Spring Boot 可配置属性

属性

描述

basePath

Spring Data REST 的根 URI

defaultPageSize

更改单个页面中提供的项目数量的默认值

maxPageSize

更改单个页面中的最大项目数量

pageParamName

更改用于选择页面的查询参数名称

limitParamName

更改用于指定页面显示项目数量的查询参数名称

sortParamName

更改用于排序的查询参数名称

defaultMediaType

更改未指定时使用的默认媒体类型

returnBodyOnCreate

更改创建新实体时是否应返回响应体

returnBodyOnUpdate

更改更新实体时是否应返回响应体

启动应用

至此,您还必须配置您的主要数据存储。

Spring Data REST 官方支持:

以下入门指南可以帮助您快速启动和运行:

这些链接的指南介绍了如何添加相关数据存储的依赖项、配置域对象以及定义仓库。

您可以将您的应用作为 Spring Boot 应用运行(使用前面显示的链接),或者将其配置为经典的 Spring MVC 应用。

通常,Spring Data REST 不会向给定的数据存储添加功能。这意味着,根据定义,它应该与任何支持仓库编程模型的 Spring Data 项目一起工作。上面列出的数据存储是那些我们编写了集成测试来验证 Spring Data REST 与之兼容的数据存储。

从这里开始,您可以使用各种选项自定义 Spring Data REST