統合

このセクションでは、Spring Data REST を使用している Spring アプリケーションから、または他の手段から、Spring Data REST コンポーネントと統合するさまざまな方法について詳しく説明します。

独自のカスタムビルド Spring MVC コントローラーにエクスポートされたリソースへのリンクを追加する必要がある場合があります。使用可能なリンクには、次の 3 つの基本レベルがあります。

  • リンクを手動で組み立てます。

  • Spring HATEOAS の LinkBuilder を linkTo()slash() などと一緒に使用します。

  • Spring Data REST の RepositoryEntityLinks (Javadoc) の実装を使用します。

最初の提案はひどいものであり、何としてでも避けるべきです。これにより、コードがもろくなり、リスクが高くなります。2 つ目は、他の手書きの Spring MVC コントローラーへのリンクを作成するときに便利です。このセクションの残りの部分で検討する最後のものは、Spring Data REST によってエクスポートされたリソースリンクを検索するのに適しています。

Spring のオートワイヤーを使用する次のクラスについて考えてみます。

public class MyWebApp {

	private RepositoryEntityLinks entityLinks;

	@Autowired
	public MyWebApp(RepositoryEntityLinks entityLinks) {
		this.entityLinks = entityLinks;
	}
}

前の例のクラスでは、次の操作を使用できます。

表 1: エクスポートされたリソースにリンクする方法
メソッド 説明

entityLinks.linkToCollectionResource(Person.class)

指定された型(この場合は Person)のコレクションリソースへのリンクを提供します。

entityLinks.linkToItemResource(Person.class, 1)

単一のリソースへのリンクを提供します。

entityLinks.linkToPagedResource(Person.class, new PageRequest(…​))

ページングされたリソースへのリンクを提供します。

entityLinks.linksToSearchResources(Person.class)

対応するリポジトリによって公開されているすべてのファインダーメソッドのリンクのリストを提供します。

entityLinks.linkToSearchResource(Person.class, "findByLastName")

rel によるファインダーリンク(つまり、ファインダーの名前)を提供します。

すべての検索ベースのリンクは、ページングと並べ替えのための追加のパラメーターをサポートしています。詳細については、RepositoryEntityLinks (Javadoc) を参照してください。linkFor(Class<?> type) もありますが、これは Spring HATEOAS LinkBuilder を返します。これにより、下位レベルの API に戻ります。最初に他のものを使用してみてください。