Springboot

MessageConverter란?(Jackson)

25G 2021. 8. 22. 14:04

 

자바 오브젝트와 파이썬 오브젝트가 있을 때 이 둘의 오브젝트는 서로 생김새가 다를 수밖에 없다. 그럼 이 자바 오브젝트와 파이선 오브젝트가 직접적으로 소통을 하게 되면 서로 모르는 언어로 대화하는 것과 같은 현상이 일어난다. 

그래서 서로 다른타입의 언어들을 이해하기 위해서 모든 언어가 해석할 수 있는 중간 언어를 만들게 되는데 그것이 바로 중간 데이터라고 불리는 녀석들이다. JSON, XML 같은 중간 데이터가 생기게 된 배경이다

 

MessageConverter라이브러리(Jackson)

자바프로그램을 누군가에게 전송할 때 json데이터로 바꿔주는 것이 MessageConverter라는 것이다. 그리고 이 MessageConverter가 비단 요청할 때만 작동하는 것이 아닌 응답을 받을 때도 JSON 데이터를 자바로 바꿔서 자바 오브젝트가 이해할 수 있도록 변환시켜주는 역할도 한다.

이렇게 하면 결과적으로 데이터를 요청하고 응답받기가 엄청 편해지는것이다.

 

 

bufferedReader, bufferedWriter에 대해서

영어는 한문자에 8bit이다 256가지의 문자면 다 해결이 된다.

근데 한글은 최소 16bit는 필요하다(경우에 수가 많기때문)

그럼 위상 황에서 영어를 데이터 통신을 할 때는 8bit씩 논리적인 단위로 1byte로 끊어 읽었을 때 문제가 되지 않는다 하지만 한글을 1byte 바이트로 끊어 읽으면 문제가 생길 수밖에 없다.

그리고 중국어는 문자가 너무 많기 때문에 3byte는 필요하다 이런 것들 때문에

유니코드에서 정의해준 것이 UTF-8인데 3byte 통신이다.

 

전기선으로 데이터를 전송할 때 byte Stream으로 1byte식 읽어내는데 자바에서 이 데이터를 받는다고 치면 inputStreamReader클래스로 바이트를 문자로 바꿔서 문자 하나로 준다. 그리고 배열로 여러 개의 문자를 받을 수 있는데 배열의 단점은 크기가 미리 정해져 있어야 한다는 것이다.(채팅 같은 시스템에서는 배열은 불가능)

그래서 위와 같은 상황에서 사용하는 것이 BufferedReader다. 이 BufferedReader로 감싸면 가변 길이의 데이터를 받을 수 있다.

Springboot에서는 이 bufferedReader, bufferedWriter를 굉장히 쉽게 사용할 수 있는데 이것들을 자바나 jsp에서처럼 직접 구현해서 설정을 할 필요가 없이 어노테이션을 사용하면 되는데

@ResponseBody라고 하면 buffered Writer가 작동하고

@RequestBody라고 달아주면 bufferedReader가 작동한다..

 

'Springboot' 카테고리의 다른 글

YML파일 이해하기  (0) 2021.12.09
STS4툴에서 github 프로젝트 가져오기/javascript환경설정  (0) 2021.12.08
톰켓이란?  (0) 2021.08.20
AOP 사용해서 sentry및 Log적용  (0) 2021.08.13
AOP실습해보기  (0) 2021.08.13