Dev/Web
[solved] HttpMessageNotWritableException: No converter for [class org.springframework.core.io.FileSystemResource] with preset Content-Type 'null']
HeBhy
2020. 11. 9. 14:13
public class WebConfig implements WebMvcConfigurer {
...
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { // 기본 컨버터를 무시하고 새로 지정
converters.add(new MappingJackson2HttpMessageConverter());
}
}
보통 spring boot 에서 이런식으로 jackson 컨버터를 다시 지정하는 글이 많더라구요.. (기본 컨버터이지만, 적용이 잘 되지 않을때)
하지만, 'configureMessageConverters' 가 기본 컨버터를 다 무시(clear) 하는 거라서 새로 추가된 컨버터만 적용이 되더라구요.. 따라서 필요한 컨버터를 일일히 다시 추가하던가, 아니면 확장 관리용 오버라이드 함수(extendMessageConverters)로 관리하면 됩니다.
public class WebConfig implements WebMvcConfigurer {
...
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) { // 기본 컨버터를 유지관리
converters.removeIf(v->v.getSupportedMediaTypes().contains(MediaType.APPLICATION_JSON)); // 기존 json용 컨버터 제거
converters.add(new MappingJackson2HttpMessageConverter()); // 새로 json 컨버터 추가. 필요시 커스텀 컨버터 bean 사용
}
}
이후 왠만하면 'no converter for ~' 에러는 나오지 않을것입니다!
저는 spring boot actuator 때문에 configureMessageConverters를 썼는데 logfile에서 에러가 떠서 보니 이런 문제가 있었더군요..
#참고: virgo47.wordpress.com/2020/05/14/spring-boot-and-http-message-converters-no-jackson-no-defaults/