2016-09-30 136 views
3

由于更新到Spring-Boot(1.4.1)的最新版本,我注意到在RestControllers中,即使我明确地设置生成的媒体类型为“application/json “它现在生产的 ”application/JSON;字符集= UTF-8“Spring RestController产生charset = UTF-8

控制器:

@RestController 
@RequestMapping(value = "/api/1/accounts", consumes = "application/json", produces = "application/json") 
public class AccountController { 
..... 

响应头

Content-Type →application/json;charset=UTF-8 

现在是否有别的地方,其中这是配置d是否覆盖了RequestMapping设置?

+3

我认为'produce'只用作查找键,'MappingJackson2HttpMessageConverter'负责实际的类型。 – OrangeDog

回答

7

根据上面的OrangeDog评论,MappingJackson2HttpMessageConverter处理字符集。这是最近更新,增加了默认字符集,如果在消息未指定(即通过RequestMapping产生配置)

这可以通过执行以下豆和字符集设置为null覆盖:

@Bean 
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() { 
    MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter(); 
    ObjectMapper objectMapper = new ObjectMapper(); 
    objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); 
    jsonConverter.setObjectMapper(objectMapper); 
    jsonConverter.setDefaultCharset(null); 
    return jsonConverter; 
}