何时使用@ enablehypermediassupport ?



根据Spring HATEOAS API,

激活ApplicationContext中的超媒体支持。将注册基础架构bean以支持基于所选hypermediamappinginformation类型和类路径的所有适当的web堆栈。

我的Spring Boot应用程序(2.3.4)有以下依赖项:

implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
implementation 'org.springframework.cloud:spring-cloud-starter-openfeign'
implementation 'org.springframework.boot:spring-boot-starter-data-rest'

My SpringBootApplication类:

@SpringBootApplication
public class MyApplication {
public static void main(String[] args) {

// run this application as a Spring application        
SpringApplication.run(MyApplication.class, args);
}
}

我注意到我的存储库通过Spring Data REST返回HALresponses,而没有用@EnableHypermediSupport注释我的应用程序类。什么时候需要这个注释?我不需要它,因为我正在使用Spring Data REST?

如果您的依赖项包含spring-hateoas, Spring Boot已经为您自动配置。依赖项spring-boot-starter-data-rest包含spring-hateoas

文件org.springframework.boot.autoconfigure.hateoas.HypermediaAutoConfiguration@EnableHypermediaSupport(type = HypermediaType.HAL).


/**
* {@link EnableAutoConfiguration Auto-configuration} for Spring HATEOAS's
* {@link EnableHypermediaSupport @EnableHypermediaSupport}.
*
* @author Roy Clarkson
* @author Oliver Gierke
* @author Andy Wilkinson
* @since 1.1.0
*/
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass({ EntityModel.class, RequestMapping.class, RequestMappingHandlerAdapter.class, Plugin.class })
@ConditionalOnWebApplication
@AutoConfigureAfter({ WebMvcAutoConfiguration.class, JacksonAutoConfiguration.class,
HttpMessageConvertersAutoConfiguration.class, RepositoryRestMvcAutoConfiguration.class })
@EnableConfigurationProperties(HateoasProperties.class)
@Import(HypermediaHttpMessageConverterConfiguration.class)
public class HypermediaAutoConfiguration {
@Configuration(proxyBeanMethods = false)
@ConditionalOnMissingBean(LinkDiscoverers.class)
@ConditionalOnClass(ObjectMapper.class)
@EnableHypermediaSupport(type = HypermediaType.HAL)
protected static class HypermediaConfiguration {
}
}

当然,您可以覆盖默认配置。

@Configuration
@EnableHypermediaSupport(…)
class MyHypermediaConfiguration { … }

相关内容

  • 没有找到相关文章

最新更新