@RequestBody, @ResponseBody

NOVEMBER 10, 2020

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이다.

작업 기록 블로그