여니의 성장 diary
article thumbnail
728x90
반응형

 

바로 직전 포스팅에서 JSON 데이터 전송 시 Encoding 오류를 해결하기 위해

config에서 configureMessageConverters() 메서드를 활용하여 MessageConverter를 등록하였는데

이미지 preview가 갑자기 다 엑박으로 도배가 되어버려서 당황...😅

 

👇🏻직전 포스팅 확인👇🏻

https://hydiary.tistory.com/35

 

[Spring] JSON 데이터 전송, Encoding 오류 해결

지난 포스팅에서 JSON 데이터 전송 자체 오류는 @ResponseBody, @RequestBody 어노테이션으로 해결했었는데, 이번에는 Encoding 오류가 발생하고 말았다😣 'UTF-8'로 정상적으로 인코딩이 되지않아서 문구

hydiary.tistory.com

 

WARN : org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver

- Resolved [org.springframework.http.converter.HttpMessageNotWritableException:

No converter for [class [B] with preset Content-Type 'image/png']

 

콘솔에서 확인한 오류의 내용은 위와 같았다.

HttpMessageNotWritableException 예외에 대하여 확인해보니 HTTP 응답을 생성하는 데 사용되는

HttpMessageConverter가 적절하지 않거나 사용할 수 없는 경우 발생하는 오류였다.

 

또 다시 chatGPT의 힘을 빌려 원인을 알아보았다😋

configureMessageConverters() 메서드는 메시지 컨버터를 구성하는 데 사용되는 메서드이다.

이미지 파일과 같은 바이너리 데이터를 처리하는 데 사용되는 기본 컨버터는

ByteArrayHttpMessageConverter 이기 때문에 

configureMessageConverters() 메서드에서 ByteArrayHttpMessageConverter를 추가해주어야 한다는 것!

 

import java.nio.charset.Charset;
import java.util.List;

import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.ByteArrayHttpMessageConverter;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class AppConfig implements WebMvcConfigurer {

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    	converters.add(new ByteArrayHttpMessageConverter());
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        converter.setDefaultCharset(Charset.forName("UTF-8"));
        converters.add(converter);
    }
}

 

converters에 ByteArrayHttpMessageConverter를 추가해주었더니

이미지 파일명도 문제없이 인코딩이 잘 되어 오류를 해결할 수 있었다😮

 

 

Servlet을 활용한 웹 애플리케이션 생성을 먼저 경험한 후

Spring Framework에서 MyBatis를 활용한 웹 애플리케이션을 만들어가면서

훨씬 더 많은 부분들을 공부해야 한다는 것을 또 한 번 느낀다😥

728x90
반응형
profile

여니의 성장 diary

@pponyo

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!