集成

本节详细介绍了与 Spring Data REST 组件集成的各种方式,无论这些方式是来自使用 Spring Data REST 的 Spring 应用程序,还是其他途径。spring-doc.cadn.net.cn

有时,你需要在自己构建的 Spring MVC 控制器中添加指向导出资源的链接。目前有三个基本级别的链接可用:spring-doc.cadn.net.cn

第一个建议非常糟糕,应不惜一切代价避免。它会使你的代码变得脆弱且风险极高。第二个建议在创建指向其他手写 Spring MVC 控制器的链接时非常实用。本节其余部分将探讨的最后一种方法,适用于查找由 Spring Data REST 导出的资源链接。spring-doc.cadn.net.cn

考虑以下使用 Spring 自动装配的类:spring-doc.cadn.net.cn

public class MyWebApp {

	private RepositoryEntityLinks entityLinks;

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

使用前面示例中的类,你可以执行以下操作:spring-doc.cadn.net.cn

表1. 链接到导出资源的方式
方法 描述

entityLinks.linkToCollectionResource(Person.class)spring-doc.cadn.net.cn

提供一个指向指定类型(本例中为 Person)集合资源的链接。spring-doc.cadn.net.cn

entityLinks.linkToItemResource(Person.class, 1)spring-doc.cadn.net.cn

提供指向单个资源的链接。spring-doc.cadn.net.cn

entityLinks.linkToPagedResource(Person.class, new PageRequest(…​))spring-doc.cadn.net.cn

提供指向分页资源的链接。spring-doc.cadn.net.cn

entityLinks.linksToSearchResources(Person.class)spring-doc.cadn.net.cn

提供一个链接列表,列出相应仓库所公开的所有查找方法。spring-doc.cadn.net.cn

entityLinks.linkToSearchResource(Person.class, "findByLastName")spring-doc.cadn.net.cn

通过 rel(即查找器的名称)提供一个查找器链接。spring-doc.cadn.net.cn

所有基于搜索的链接都支持用于分页和排序的额外参数。详见 RepositoryEntityLinks。此外还有 linkFor(Class<?> type),但它会返回一个 Spring HATEOAS LinkBuilder,该响应会将您引导回底层 API。建议优先尝试其他链接。