自Spring Data REST 2.0.0.RC1以来无法识别的字段“_links”

时间:2014-02-13 10:36:15

标签: spring-data-rest spring-hateoas

一方面,我刚刚将spring-data-rest-webmc的版本更新到我服务器的最新2.0.0.RC1版本。在此版本中,json格式更改为HAL格式。

另一方面,我有一个客户端使用spring-hateoas库和0.9.0.RELEASE版本。 在这个客户端中,我使用RestTemplate从我的服务器获取资源,如下所示:

AuthorResource authorResource =  restTemplate.getForObject(BASE_URL+"authors/"+ authorId, AuthorResource.class);

AuthorResource类扩展了ResourceSupport。

现在,我有这个错误:

Nested exception is com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "_links" (class org.example.hateoas.AuthorResource)

如何配置我的客户端以支持这种新格式? 我试试

  

@EnableHypermediaSupport(type =   EnableHypermediaSupport.HypermediaType.HAL)

但它不起作用。

谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

问题是没有设置halMapperObject,因为上下文不是spring web。 您必须像这样创建自己的RestTemplate类

@Component
public class EraRestTemplate extends RestTemplate implements InitializingBean {

@Autowired
@Qualifier("_halObjectMapper")
ObjectMapper halObjectMapper;

static class HALMessageConverter extends MappingJackson2HttpMessageConverter {

}

@Override
public void afterPropertiesSet() throws Exception {
    halObjectMapper.registerModule(new Jackson2HalModule());

    HALMessageConverter converter = new HALMessageConverter();
    converter.setObjectMapper(halObjectMapper);

    this.getMessageConverters().clear();
    this.getMessageConverters().add(converter);
}
}

现在对我来说很好,感谢一位非常了解Spring的朋友。