5. 配置

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

5.1. 使用@EnableHypermediaSupport

要根据各种超媒体表示类型的规范来呈现子类型,可以通过以下方式激活对特定超媒体表示格式的支持。注解将枚举作为其参数。目前,我们支持 HAL 以及默认渲染。使用注释会触发以下操作:RepresentationModel@EnableHypermediaSupportHypermediaTypespring-doc.cn

  • 它注册了必要的 Jackson 模块以超媒体特定的格式进行渲染。EntityModelCollectionModelspring-doc.cn

  • 如果 JSONPath 在 Classpath 上,它会自动注册一个实例,以按它们在纯 JSON 表示中查找链接(参见使用 LinkDiscoverer 实例)。LinkDiscovererrelspring-doc.cn

  • 默认情况下,它会启用实体链接并自动选取实现并将它们捆绑到您可以自动装配的实例中。EntityLinksDelegatingEntityLinksspring-doc.cn

  • 它会自动拾取 中的所有实现,并将它们捆绑到一个你可以自动装配的 implementations 中。它注册了要在域类型以及 Spring MVC 控制器上考虑的提供者。如果 EVO 变形器位于 Classpath 上,则通过使用库中实现的复数算法来派生集合值(参见 [spis.rel-provider])。RelProviderApplicationContextDelegatingRelProvider@Relationrelspring-doc.cn

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

默认情况下,将反射性地检测你正在使用的 Web 应用程序堆栈,并挂接到为这些组件注册的 Spring 组件中,以启用对超媒体表示的支持。 但是,在某些情况下,您只想明确激活对特定堆栈的支持。 例如,如果你基于 Spring WebMVC 的应用程序使用 WebFlux 来发出传出请求,并且它不应该与超媒体元素一起工作,你可以通过在配置中显式声明 WebMVC 来限制要启用的功能:@EnableHypermediaSupportWebClientspring-doc.cn

例 42.显式激活对特定 Web 堆栈的超媒体支持
@EnableHypermediaSupport(…, stacks = WebStack.WEBMVC)
class MyHypermediaConfiguration { … }