集成
本节详细介绍了与 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;
}
}
使用前面示例中的类,你可以执行以下操作:
| 方法 | 描述 |
|---|---|
|
提供一个指向指定类型(本例中为 |
|
提供指向单个资源的链接。 |
|
提供指向分页资源的链接。 |
|
提供一个链接列表,列出相应仓库所公开的所有查找方法。 |
|
通过 |
所有基于搜索的链接都支持用于分页和排序的额外参数。详见 RepositoryEntityLinks。此外还有 linkFor(Class<?> type),但它会返回一个 Spring HATEOAS LinkBuilder,该响应会将您引导回底层 API。建议优先尝试其他链接。 |