1. 자바 직렬화 (Serialize)
Deserialize Serialize
Byte Data ---------------> Java Object ---------------> Byte Data
2. @RequestBody, @ResponseBody
- @RequestBody 어노테이션과 @ResponseBody 어노테이션은 각각 HTTP 요청 몸체를 자바 객체로 변환하고 자바 객체를 HTTP 응답 몸체로 변환하는 데 사용된다.
3. HttpMessageConverter를 이용한 변환 처리
- AnnotationMethodHandlerAdapter 클래스는 @RequestBody 어노테이션이 적용된 파라미터나 @ResponseBody 어노테이션이 적용된 메서드에 대해 HttpMessageConverter를 사용해서 변환을 처리한다. 주요 HttpMessageConverter 구현 클래스는 다음과 같다.
| 구현 클래스 |
설 명 |
| ByteArrayHttpMessageConverter |
HTTP 메시지와 byte 배열 사이의 변환을 처리한다. 컨텐츠 타입은 application/octet-stream이다. |
| StringHttpMessageConverter |
HTTP 메시지와 String 사이의 변환을 처리한다. 컨텐츠 타입은 text/plain;charset=ISO-8859-1이다. |
| FormHttpMessageConverter |
HTML 폼 데이터를 MultiValueMap으로 전달받을 때 사용된다. 지원하는 컨텐 츠 타입은 application-x-www-form-urlencorded이다. |
| SourceHttpMessageConverter |
HTTP 메시지와 javax.xml.transform.Source 사이 변환을 처리한다. 컨텐츠 타 입은 application/xml 또는 text/xml이다. |
| MarshallingHttpMessageConverter |
스프링의 Marshaller와 unMarshaller를 이용해서 XML HTTP 메시지와 객체 사 이의 변환을 처리한다. 컨텐츠 타입은 application/xml 또는 text/xml이다. |
| MappingJacksonHttpMessageConverter |
Jackson 라이브러리를 이용해서 JSON HTTP 메시지와 객체 사이의 변환을 처 리한다. 컨텐츠 타입은 applicaion/json이다. |