整合

本節詳細介紹了與 Spring Data REST 组件整合的各種方式,無論是從使用 Spring Data REST 的 Spring 應用程式還是從其他方式。

有時您需要在自己建置的 Spring MVC 控制器中新增連結到匯出的資源。有三種基本的連結層級可用

第一個建議非常糟糕,應不惜一切代價避免。它會使您的程式碼變得脆弱且高風險。第二個建議在建立到其他手寫 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)

為對應的 repository 公開的所有 finder 方法提供連結清單。

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

rel(即 finder 的名稱)提供 finder 連結。

所有基於搜尋的連結都支援用於分頁和排序的額外參數。有關詳細資訊,請參閱 RepositoryEntityLinks。還有 linkFor(Class<?> type),但它會傳回 Spring HATEOAS LinkBuilder,這會將您帶回較低層級的 API。請先嘗試使用其他方法。