[英]What happend to HttpMessageConverters in spring boot 2?
[英]How should I configure httpMessageConverters in Spring boot to convert messages into required format?
我使用Spring Boot
编写了api服务,该服务以Google ProtoBuf
格式提供请求。 我的要求是,每当用户使用接受标头作为application-json format
我的服务时,我都希望使用proto-buf-java Format
(用于将JSON
字符串与proto对象之间来回转换的库)将呈现的proto对象转换为JSON
格式。 现在发生的事情是,每当用户点击application/x-protobuf
格式时,spring都会使用protobufHTTPMessageConverter
转换为所需格式,但是当用户点击Json格式时,spring boot使用默认的JacksonMapper
,并且无法将其转换为JsonString
。 我是Spring Boot
新手,我也需要解决方案来配置消息转换器以提供JSON
格式。
尝试添加下面的类。 假设您没有打开自动扫描功能,SpringBoot应该对其进行扫描。 在请求您的API时,默认情况下,它将返回序列化为JSON的对象,或仅将&mediaType = json添加到请求中。
@EnableWebMvc
@Configuration
public class CustomConfig extends WebMvcConfigurerAdapter
{
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters)
{
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
mappingJackson2HttpMessageConverter.setPrettyPrint(true);
mappingJackson2HttpMessageConverter.getObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
converters.add(mappingJackson2HttpMessageConverter);
}
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer)
{
configurer.defaultContentType(MediaType.APPLICATION_JSON);
configurer.favorPathExtension(false);
configurer.favorParameter(true);
configurer.ignoreAcceptHeader(true);
configurer.useJaf(false);
configurer.parameterName("mediaType");
configurer.mediaType("json", MediaType.APPLICATION_JSON);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.