관리 메뉴

HeBhy, since 1983.

[solved] HttpMessageNotWritableException: No converter for [class org.springframework.core.io.FileSystemResource] with preset Content-Type 'null'] 본문

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/

Comments