5. 配置

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

5.1. 使用@EnableHypermediaSupport

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

  • 它注册了必要的 Jackson 模块以渲染EntityModelCollectionModel以超媒体特定格式。spring-doc.cadn.net.cn

  • 如果 JSONPath 在类路径上,它会自动注册一个LinkDiscoverer实例通过其rel在纯 JSON 表示形式中(请参阅LinkDiscoverer实例).spring-doc.cadn.net.cn

  • 默认情况下,它启用实体链接并自动选取EntityLinks实现并将它们捆绑到DelegatingEntityLinks实例,您可以自动连线。spring-doc.cadn.net.cn

  • 它会自动拾取所有RelProvider中的实现ApplicationContext并将它们捆绑成一个DelegatingRelProvider您可以自动连接。它注册要考虑的提供商@Relation在域类型以及 Spring MVC 控制器上。如果 EVO 变化器位于类路径上,则集合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 { … }