1. Message Converter란?
Message Converter란 말그대로 메시지를 가공해주는 도구를 말한다.
전 세계의 공용어가 영어인 것처럼, Web에서의 공용어는 JSON(JavaScript Object Notation)이다.
자바 오브젝트를 파이썬 오브젝트를 사용하는 곳에 보낸다고 생각해보자.
만약 그냥 자바 언어로 보낸다면 파이썬 프로그램은 해당 언어를 전혀 이해하지 못할 것이다.
반대로 파이썬 측에서 파이썬 언어로 오브젝트를 전송한다면 자바 프로그램도 이해하지 못하는 건 똑같다.
그렇기 때문에 서로 통신할 때는 JSON 오브젝트를 사용해야한다. JSON은 자바스크립트 기반이지만, 통신의 공용어로 사용된다. 각각 프로그램에서 오브젝트를 JSON 데이터로 변경하거나 JSON 데이터를 해당 언어의 오브젝트로 바꿔주는 통역관 역할을 하는 도구가 있는데 이것이 Message Converter 다!!
Spring의 메시지 컨버터는 Jackson 라이브러리를 통해 자바 언어를 JSON 오브젝트로 바꿔서 요청을 보내고
응답 받을 때는 JSON 오브젝트를 수신하는데 메시지 컨버터가 이를 자바 언어로 번역해준다.
2. Message Converter 어노테이션
- 어노테이션
어노테이션 | 설명 |
@RequestBody | 요청 데이터 읽기 JSON -> 자바 언어로 번역해줌 Buffered Reader가 작동 |
@ResponseBody | 응답 데이터 만들기 자바 언어 -> JSON으로 변환해줌 Buffered Writer가 작동 |
3. 주로 사용하는 메시지 컨버터
①ByteArrayHttpMessageConverter
- byte[] 데이터를 처리.
- 클래스 타입 : byte[], 미디어타입 : */*
- 요청 예)@RequestBody byte[] data
- 응답 예)ReseponseBody return byte[] 쓰기 미디어타입 application/octet-stream
②StringHttpMessageConverter
- String 문자로 데이터를 처리한다.
- 클래스 타입 : String, 미디어타입 : */*
- 요청 예)@RequestBody String data
- 응답 예)ReseponseBody return "ok" 쓰기 미디어타입 text/plain
③MappingJackson2HttpMessageConverter
- application/json
- 클래스 타입 : 객체 또는 HashMap, 미디어타입 : application/json 관련
- 요청 예)@RequestBody Object data
- 응답 예)ReseponseBody return data 쓰기 미디어타입 application/json 관련
** 참고 자료 **
스프링부트 개념정리 with JPA (이지업 강의): https://www.easyupclass.com/course/273/about
꾸준함님 블로그: https://jaimemin.tistory.com/1823