5. 配置

本节介绍如何配置 Spring HATEOAS。spring-doc.cadn.net.cn

5.1. 使用@EnableHypermediaSupport

为了让RepresentationModel个子类型根据各种超媒体表示类型的规范进行渲染,您可以通过@EnableHypermediaSupport激活对特定超媒体表示格式的支持。该注解接受一个HypermediaType枚举作为其参数。目前,我们支持HAL以及默认渲染。使用该注解将触发以下操作:spring-doc.cadn.net.cn

  • 它注册必要的 Jackson 模块,以便以超媒体特定格式渲染 EntityModelCollectionModelspring-doc.cadn.net.cn

  • 如果 JSONPath 在类路径上,它会自动注册一个 LinkDiscoverer 实例,以便在纯 JSON 表示中通过其 rel 查找链接(请参阅 使用 LinkDiscoverer 实例)。spring-doc.cadn.net.cn

  • 默认情况下,它启用 实体链接,并自动检测 EntityLinks 实现,将它们捆绑到一个您可自动装配的 DelegatingEntityLinks 实例中。spring-doc.cadn.net.cn

  • 它会自动选取 RelProvider 中的所有 ApplicationContext 实现,并将它们捆绑到一个可进行自动装配的 DelegatingRelProvider 中。它会注册提供者,以便同时考虑领域类型上的 @Relation 以及 Spring MVC 控制器。如果类路径中存在 EVO inflector,则集合 rel 的值将通过使用该库中实现的复数化算法推导得出(参见 [spis.rel-provider])。spring-doc.cadn.net.cn

5.1.1. 显式启用对专用 Web 栈的支持

默认情况下,@EnableHypermediaSupport 会通过反射检测您正在使用的 Web 应用栈,并挂钩为这些栈注册的 Spring 组件,以启用对超媒体表示的支持。 然而,在某些情况下,您可能只想显式激活对特定栈的支持。 例如,如果您的基于 Spring WebMVC 的应用程序使用 WebFlux 的 WebClient 来发起出站请求,而该请求不应与超媒体元素协同工作,则您可以通过在配置中显式声明 WebMVC 来限制所启用的功能:spring-doc.cadn.net.cn

示例 42. 为特定 Web 堆栈显式启用超媒体支持
@EnableHypermediaSupport(…, stacks = WebStack.WEBMVC)
class MyHypermediaConfiguration { … }