入門

Spring Data REST 自体が Spring MVC アプリケーションであり、既存の Spring MVC アプリケーションと簡単に統合できるように設計されています。サービスの既存 (または将来) のレイヤーは、わずかな追加作業のみで Spring Data REST と並行して実行できます。

Spring Data REST を Spring Boot プロジェクトに追加する

Spring Boot には Spring Data REST のスターターがあり、自動構成を使用しているため、開始する最も簡単な方法は Spring Boot アプリケーションを構築することです。次の例は、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 アーティファクトを追加します。

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

Spring Data REST を Maven プロジェクトに追加する

Spring Data REST を Maven ベースのプロジェクトに追加するには、次のように、コンパイル時の依存関係に spring-data-rest-webmvc アーティファクトを追加します。

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

Spring Data REST の構成

既存の Spring MVC アプリケーションと一緒に Spring Data REST をインストールするには、適切な 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 リソースとしてエクスポートされるかどうかを判断します。RepositoryDiscoveryStrategies 列挙には、次の値が含まれます。

表 1: リポジトリ検出戦略

名前

説明

DEFAULT

すべてのパブリックリポジトリインターフェースを公開しますが、@(Repository)RestResource の exported フラグを考慮します。

ALL

型の可視性やアノテーションに関係なく、すべてのリポジトリを公開します。

ANNOTATED

exported フラグが false に設定されていない限り、@(Repository)RestResource でアノテーションが付けられたリポジトリのみが公開されます。

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

1 ページで提供されるアイテム数のデフォルトを変更します

maxPageSize

1 ページのアイテムの最大数を変更する

pageParamName

ページを選択するためのクエリパラメーターの名前を変更する

limitParamName

ページに表示するアイテムの数のクエリパラメーターの名前を変更します

sortParamName

並べ替え用のクエリパラメーターの名前を変更する

defaultMediaType

何も指定されていない場合に使用するデフォルトのメディア型を変更します

returnBodyOnCreate

新しいエンティティを作成するときに本文を返すかどうかを変更します

returnBodyOnUpdate

エンティティの更新時に本文を返すかどうかを変更する

アプリケーションの起動

この時点で、キーデータストアも構成する必要があります。

Spring Data REST は公式に以下をサポートします。

次のスタートガイドは、すぐに立ち上げて実行できます。

これらのリンクされたガイドでは、関連するデータストアの依存関係を追加する方法、ドメインオブジェクトを構成する方法、リポジトリを定義する方法を紹介しています。

アプリケーションを Spring Boot アプリ (前述のリンクを使用) として実行するか、クラシック Spring MVC アプリとして構成することができます。

一般に、Spring Data REST は特定のデータストアに機能を追加しません。これは、定義上、リポジトリプログラミングモデルをサポートするすべての Spring Data プロジェクトで機能する必要があることを意味します。上記のデータストアは、Spring Data REST がそれらで動作することを確認するための統合テストを作成したものです。

この時点から、さまざまなオプションで Spring Data REST をカスタマイズできます。