Integration

本部分详细介绍了各种与 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;
	}
}

使用前一个示例中的类,您可以使用以下操作:

Table 1. Ways to link to exported resources
Method Description

entityLinks.linkToCollectionResource(Person.class)

提供链接到指定的类型集合资源(在本例中为 Person)。

entityLinks.linkToItemResource(Person.class, 1)

Provide a link to a single resource.

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

提供指向分页资源的链接。

entityLinks.linksToSearchResources(Person.class)

提供对应存储库公开的所有 Finder 方法的链接列表。

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

通过 rel(即 Finder 的名称)提供 Finder 链接。

所有基于搜索的链接都支持分页和排序的附加参数。有关详细信息,请参阅 link:https://docs.spring.io/spring-data/rest/docs/current/api/org/springframework/data/rest/webmvc/support/RepositoryEntityLinks.html[RepositoryEntityLinks。还有 linkFor(Class<?> type),但它会返回一个 Spring HATEOAS LinkBuilder,它会将您返回到较低级别的 API。请首先尝试使用其他的。