2016-09-30 140 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; 
}