是否可以覆盖MappingJackson2HttpMessageConverter来支持HAL + JSON?

时间:2014-12-17 17:42:48

标签: java spring rest spring-hateoas hal-json

在我的Spring Boot应用程序中,我已将HAL对象映射器分配给MappingJackson2HttpMessageConverter。这是因为我的自定义媒体类型以+json结尾,最终被默认转换器识别。 Spring HATEOAS注册的自定义MappingJackson2HttpMessageConverter实例仅识别application/hal+json。我的自定义媒体类型的格式为application/vnd.service.entity.v1.hal+json,默认实例可识别(因为它支持application/jsonapplication/*+json)。但是,默认实例不会将链接正确序列化为HAL约定。我已经能够通过注册映射器来解决它:

@Bean
public HttpMessageConverters customConverters() {
    MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
    converter.setSupportedMediaTypes(Arrays.asList(
            new MediaType("application", "json", Charset.defaultCharset()),
            new MediaType("application", "*+json", Charset.defaultCharset()),
            new MediaType("application", "hal+json")
    ));

    ObjectMapper halObjectMapper = beanFactory.getBean(HAL_OBJECT_MAPPER_BEAN_NAME, ObjectMapper.class);
    converter.setObjectMapper(halObjectMapper);

    return new HttpMessageConverters(converter);
}

有人担心我现在正在使用HAL问题污染常规JSON序列化/反序列化,但我想不出任何其他方式(没有明确指定我使用的每个自定义媒体类型)来执行此操作。想法?

0 个答案:

没有答案