MessageConverter
🧩 MessageConverter
정의
MessageConverter는 Spring 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와 연결해서 이해하면 쉽다.
댓글남기기