🧩 MessageConverter

정의

MessageConverterSpring MVC에서 HTTP 요청/응답 본문을 자바 객체와 서로 변환하는 인터페이스이다. 요청 body를 객체로 읽고, 객체를 응답 body로 작성하는 역할을 한다.

@RequestBody@ResponseBody 처리의 핵심 기반이다.

🧩 역할

  • HTTP 요청 본문을 자바 객체로 변환한다
  • 자바 객체를 HTTP 응답 본문으로 변환한다
  • JSON, 문자열, XML, 바이너리 등을 처리한다
  • Spring MVC의 요청/응답 직렬화 계층을 담당한다

🛠 적용 방법

WebMvcConfigurer에 등록

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "org.infinity.server.controller.api")
public class APIConfiguration implements WebMvcConfigurer {

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        GsonHttpMessageConverter converter = new GsonHttpMessageConverter();
        converters.add(converter);
    }
}

🧩 주요 구현체

Converter 역할
MappingJackson2HttpMessageConverter Jackson 기반 JSON 변환
GsonHttpMessageConverter Gson 기반 JSON 변환
StringHttpMessageConverter 문자열 처리
ByteArrayHttpMessageConverter 바이트 배열 처리
FormHttpMessageConverter HTML Form 데이터 처리
Jaxb2RootElementHttpMessageConverter XML 처리
ResourceHttpMessageConverter 파일/리소스 처리

🧩 특징

  • HTTP body 변환을 담당한다
  • 컨텐츠 타입에 따라 적절한 Converter가 선택된다
  • 여러 Converter가 등록될 수 있다
  • 기본 제공 Converter를 확장하거나 교체할 수 있다

⚠️ 주의사항

  • 여러 Converter가 같은 타입을 처리하면 우선순위 충돌이 생길 수 있다.
  • 커스텀 Converter를 추가할 때는 순서를 고려해야 한다.
  • JSON 정책이 프로젝트 전체에서 일관되게 유지되는지 확인해야 한다.
  • @RequestBody@ResponseBody의 동작을 이해하고 사용해야 한다.

📌 정리

  • MessageConverter는 Spring MVC의 body 변환을 담당하는 인터페이스다.
  • 요청 body를 객체로, 객체를 응답 body로 바꾸는 역할을 한다.
  • @RequestBody, @ResponseBody, GsonHttpMessageConverter와 연결해서 이해하면 쉽다.

연결문서

댓글남기기