Spring RestController生成charset = UTF-8

Bac*_*con 3 java spring-mvc spring-boot

自从更新到最新版本的Spring-Boot(1.4.1)后,我注意到在我的RestControllers中,即使我明确地将生成的媒体类型设置为"application/json",它现在正在生成"application/json; charset = UTF-8"

控制器:

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

响应标题

Content-Type ?application/json;charset=UTF-8
Run Code Online (Sandbox Code Playgroud)

现在是否在其他地方配置了覆盖RequestMapping设置?

Bac*_*con 7

根据OrangeDog上面的注释,MappingJackson2HttpMessageConverter处理字符集.如果在消息中没有指定(即通过RequestMapping生成配置),则最近已更新以添加默认charSet

这可以通过实现下面的bean并将charSet设置为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;
}
Run Code Online (Sandbox Code Playgroud)