공부 배경
Spring Web MVC를 사용하게 되면 수 많은 어노테이션들을 이용해 자동으로 기능을 구성시키는 경우가 많은데,,, 생각보다 동작 원리나 개념을 모르고 쓰는 경우가 있다.
점진적으로 하나씩 살펴보려고 합니다.
@RequestBody and @ResponseBody
- HTTP 요청 및 응답의 본문을 Java 클래스 개체로 변환하는 데 사용
HTTP message converters
를 이용- 단순히 HTTP 요청 및 응답 본문에는 Java 객체의 형태(있는 그대로)로 포함될 수 없다
- JSON,XML 또는 다른 형식의 데이터(MIME)만 가능
- 결국
HTTP 요청 및 응답의 본문을 Java 클래스 개체로 변환하는 데 사용
의 역할을 수행하는 변환기이다
- Spring FrameWork가 HTTP Message Converters를 선택하는 방법
@RequestBody의 Converter는 HTTP 프로토콜의 헤더
Content-Type
을 보고 결정1 2
If the Content-Type is application/json , then it will select a JSON to Java Object converter. If the Content-Type is application/xml , then it will select a XML to Java Object converter.
@ResponseBody의 Converter는 HTTP 프로토콜의 헤더
Accept
을 보고 결정1 2
If the Accept is application/json , then it will select a Java Object to JSON converter. If the Accept is application/xml , then it will select a Java Object to XML converter.
XML 타입을 변환하기 위해서는 아래 의존성이 있는지 확인
1 2 3 4
<dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> </dependency>
- 참고문헌
- https://springbootdev.com/2017/04/12/spring-mvc-what-is-requestbody-and-responsebody/