一方面,我刚刚将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)
但它不起作用。
谢谢你的帮助。答案 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的朋友。