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