对于最新的稳定版本,请使用 Spring Data REST 4.5.0

开始

Spring Data REST 本身就是一个 Spring MVC 应用程序,其设计方式使其应该毫不费力地与您现有的 Spring MVC 应用程序集成。现有(或未来)的服务层可以与 Spring Data REST 一起运行,只需少量的额外工作。

将 Spring Data REST 添加到 Spring Boot 项目中

最简单的入门方法是构建 Spring Boot 应用程序,因为 Spring Boot 具有 Spring Data REST 的Starters并使用自动配置。以下示例展示了如何使用 Gradle 在 Spring Boot 项目中包含 Spring Data Rest:

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

下面的示例展示了如何使用 Maven 在 Spring Boot 项目中包含 Spring Data Rest:

示例 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-webmvcartifact 添加到编译时依赖项中,如下所示:

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

将 Spring Data REST 添加到 Maven 项目

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

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

配置 Spring Data REST

要将 Spring Data REST 与现有的 Spring MVC 应用程序一起安装,您需要包含适当的 MVC 配置。 Spring Data REST 配置在名为RepositoryRestMvcConfiguration您可以将该类导入到应用程序的配置中。

如果您使用 Spring Boot 的自动配置,则此步骤是不必要的。Spring Boot 在包含 spring-boot-starter-data-rest 时会自动启用 Spring Data REST,并且在依赖项列表中,您的应用程序会标有@SpringBootApplication@EnableAutoConfiguration.

要自定义配置,请注册一个RepositoryRestConfigurer并实现或覆盖configure…- 方法。

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

Spring Data REST 的基本设置

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

设置存储库检测策略

Spring Data REST 使用RepositoryDetectionStrategy以确定是否将存储库导出为 REST 资源。这RepositoryDiscoveryStrategiesenumeration 包括以下值:

表 1.存储库检测策略

名称

描述

DEFAULT

公开所有公共仓库接口,但将exported的标志@(Repository)RestResource.

ALL

独立于类型可见性和注释公开所有存储库。

ANNOTATED

仅带有@(Repository)RestResource被公开,除非他们的exportedflag 设置为false.

VISIBILITY

仅公开带注释的公共存储库。

更改基本 URI

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

在 Spring Boot 1.2 及更高版本中,你可以通过在application.properties如下:

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

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

limitParamName

更改 Query 参数的名称,以获取页面中显示的项目数

sortParamName

更改用于排序的 Query 参数的名称

defaultMediaType

更改 Default Media Type (默认媒体类型) 以在指定 None 时使用

returnBodyOnCreate

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

returnBodyOnUpdate

更改更新实体时是否应返回正文

启动应用程序

此时,您还必须配置密钥数据存储。

Spring Data REST 官方支持:

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

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

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

通常, Spring Data REST 不会向给定的数据存储添加功能。这意味着,根据定义,它应该与任何支持存储库编程模型的 Spring Data 项目一起使用。上面列出的数据存储是我们为其编写集成测试以验证 Spring Data REST 是否适用于它们的数据存储。

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