5. 配置
本节介绍如何配置 Spring HATEOAS。
5.1. 使用@EnableHypermediaSupport
为了让RepresentationModel个子类型根据各种超媒体表示类型的规范进行渲染,您可以通过@EnableHypermediaSupport激活对特定超媒体表示格式的支持。该注解接受一个HypermediaType枚举作为其参数。目前,我们支持HAL以及默认渲染。使用该注解将触发以下操作:
-
它注册必要的 Jackson 模块,以便以超媒体特定格式渲染
EntityModel和CollectionModel。 -
如果 JSONPath 在类路径上,它会自动注册一个
LinkDiscoverer实例,以便在纯 JSON 表示中通过其rel查找链接(请参阅 使用LinkDiscoverer实例)。 -
默认情况下,它启用 实体链接,并自动检测
EntityLinks实现,将它们捆绑到一个您可自动装配的DelegatingEntityLinks实例中。 -
它会自动选取
RelProvider中的所有ApplicationContext实现,并将它们捆绑到一个可进行自动装配的DelegatingRelProvider中。它会注册提供者,以便同时考虑领域类型上的@Relation以及 Spring MVC 控制器。如果类路径中存在 EVO inflector,则集合rel的值将通过使用该库中实现的复数化算法推导得出(参见 [spis.rel-provider])。
5.1.1. 显式启用对专用 Web 栈的支持
默认情况下,@EnableHypermediaSupport 会通过反射检测您正在使用的 Web 应用栈,并挂钩为这些栈注册的 Spring 组件,以启用对超媒体表示的支持。
然而,在某些情况下,您可能只想显式激活对特定栈的支持。
例如,如果您的基于 Spring WebMVC 的应用程序使用 WebFlux 的 WebClient 来发起出站请求,而该请求不应与超媒体元素协同工作,则您可以通过在配置中显式声明 WebMVC 来限制所启用的功能:
@EnableHypermediaSupport(…, stacks = WebStack.WEBMVC)
class MyHypermediaConfiguration { … }