对于最新的稳定版本,请使用 Spring Data REST 4.3.1

对于最新的稳定版本,请使用 Spring Data REST 4.3.1

本节详细介绍了与Spring Data REST组件集成的各种方法,无论是从使用Spring Data REST的Spring应用程序还是从其他方式集成。

有时,您需要在自己的自定义 Spring MVC 控制器中添加指向导出资源的链接。有三个基本的链接级别可用:

  • 手动组装链接。

  • 将 Spring HATEOAS 的 LinkBuilder 与 、 等一起使用。linkTo()slash()

  • 使用 Spring Data REST 的 RepositoryEntityLinks 实现。

第一个建议很糟糕,应该不惜一切代价避免。它使您的代码变得脆弱且高风险。第二个在创建指向其他手写的 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。还有 ,但它返回一个 Spring HATEOAS ,它将您返回到较低级别的 API。尝试先使用其他的。linkFor(Class<?> type)LinkBuilder
表 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。还有 ,但它返回一个 Spring HATEOAS ,它将您返回到较低级别的 API。尝试先使用其他的。linkFor(Class<?> type)LinkBuilder