비동기통신을 하기위해서는 클라이언트에서 서버로 요청 메세지를 보낼 때, 본문(body)에 데이터를 담아서 보내야 하고, 서버에서 클라이언트로 응답을 보낼때에도 본문(body)에 데이터를 담아서 보내야 한다.
즉, 요청본문 requestBody, 응답본문 responseBody 을 담아서 보냄으로 비동기 통신하게 된다.
@RequestBody 어노테이션과 @ResponseBody 어노테이션이 각각 HTTP요청 body를 자바객체로 변환하고,
자바객체를 다시 HTTP 응답 body로 변환해준다.
@RequestBody
클라이언트에서 서버로 필요한 데이터를 요청하기 위해 JSON 데이터를 요청 본문에 담아서 서버로 보내면, 서버에서는 @RequestBody 어노테이션을 사용하여 HTTP 요청 본문에 담긴 값들을 자바객체로 변환시켜, 객체에 저장한다.
JSON ---> Java Object로 변환
@ResponseBody
서버에서 클라이언트로 응답 데이터를 전송하기 위해 @ResponseBody 어노테이션을 사용하여 자바 객체를 HTTP 응답 본문의 객체로 변환하여 클라이언트로 전송한다.
Java Object ---> JSON
Jackson2HttpMessageConverter
Spring 에서 JSON 형변환을 담당하는 것이 Jackson2HttpMessageConverter입니다.
즉, @RequestBody로 JSON 데이터가 넘어오면 이 JSON을 Java Object로 변환은 Jackson2HttpMessageConverter 에서 해줍니다.
공식문서에서 확인할 수 있다.
https://www.baeldung.com/spring-httpmessageconverter-rest
출처: https://cheershennah.tistory.com/179 [Today I Learned. @cheers_hena 치얼스헤나:티스토리]