====== SpringBoot HttpMessageConverters ====== * [[springframework:springboot|SpringBoot]] 에서 [[springframework:springboot:mvc|SpringBoot and Spring Web MVC]] Http Message Converters 설정. ===== Auto Configuration ===== * ''org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration'' * 위 설정에서는 ''HttpMessageConverter'' Bean 이 존재하는 것을 모두 모아 자동 등록해준다. * ''org.springframework.boot.autoconfigure.http.JacksonHttpMessageConvertersConfiguration''은 ''org.springframework.http.converter.json.MappingJackson2HttpMessageConverter''가 존재하지 않으면 Bean 을 자동 생성해준다. ===== MappingJackson2HttpMessageConverter 의 설정변경 ===== * SpringBoot 에서는 위의 자동 설정 규칙에 의해서 그냥 ''org.springframework.http.converter.json.MappingJackson2HttpMessageConverter'' Bean 을 원하는 대로 생성만 해주면 자동으로 HttpMessageConverters 로 등록되게 된다. * 따라서 원하는 대로 객체를 생성해서 넣어주면 된다. * 예를들어 SpringBoot 2.3 부터 JSON 응답이 ''application/json''이 되고, ''application/json;charset=UTF-8''이 deprecated 되었는데, 강제로 문자셋을 지정하려면 다음과 같이 한다. @Bean public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(ObjectMapper objectMapper) { var mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(objectMapper); mappingJackson2HttpMessageConverter.setSupportedMediaTypes(Lists.newArrayList(MediaType.APPLICATION_JSON_UTF8)); return mappingJackson2HttpMessageConverter; }