集成

本节详细介绍了与 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。 尝试先使用其他的。