加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在不使用@EnableHypermediaSupport和spring hateoas的情况下

发布时间:2020-12-15 01:35:50 所属栏目:大数据 来源:网络整理
导读:使用@EnableHypermediaSupport(type = HypermediaType.HAL)Spring hateoas提供了一种简单方便的方法来启用HAL渲染. 注释触发了一些配置魔术,这里解释: https://github.com/spring-projects/spring-hateoas#enablehypermediasupport 但是,如果您正在处理基于

使用@EnableHypermediaSupport(type = HypermediaType.HAL)Spring hateoas提供了一种简单方便的方法来启用HAL渲染.

注释触发了一些配置魔术,这里解释:
https://github.com/spring-projects/spring-hateoas#enablehypermediasupport

但是,如果您正在处理基于xml-config的弹簧应用程序,则集成@EnableHypermediaSupport并不容易.我尝试了很多不同的方法来启用HAL渲染,但没有一个解决方案正常工作:

>在现有mvc servlet xml配置中包含配置类.
>使用不同版本的spring hateos(0.70.0,0.80.0,0.9.0.BUILD-SNAPSHOT),希望0.90.0会产生开箱即用的HAL,因为根据jira问题,它应该成为默认渲染(至少对于Spring数据休息).
>使用自定义MappingJackson2HttpMessageConverter注册新的Jackson2HalModule()也不起作用.虽然转换器用于渲染(例如渲染日期),但输出未在HAL中渲染.

因此我的问题是:如何在不使用EnableHypermediaSupport的情况下启用HAL渲染?

我故意遗漏任何代码片段,因为我认为它不会有多大帮助.

最佳答案
基于@WaldemarSchneider answer,这是一个具体的方法:

创建HTTP消息转换器:

public class HalHttpMessageConverter extends AbstractJackson2HttpMessageConverter {

  public HalHttpMessageConverter() {
    super(new ObjectMapper(),new MediaType("application","hal+json",DEFAULT_CHARSET));
    objectMapper.registerModule(new Jackson2HalModule());
    objectMapper.setHandlerInstantiator(new Jackson2HalModule.HalHandlerInstantiator(new DefaultRelProvider(),null));
    // customize your mapper if needed
    objectMapper.enable(SerializationFeature.INDENT_OUTPUT);
  }

  @Override
  protected boolean supports(Class

在servlet上下文中注册它:

并且不要忘记让你的休息控制器产生application / hal json:

@RestController
@RequestMapping(value = "/articles",produces = "application/hal+json")
public class ArticleRestController {
  ...
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读