코딩하는 둥둥

[ Springboot ] Spring 개념잡기 : 메시지 컨버터가 무엇인가요? 본문

Backend/스프링부트 개념정리(이론)

[ Springboot ] Spring 개념잡기 : 메시지 컨버터가 무엇인가요?

둥둥 2022. 2. 9. 21:08
728x90
Spring의 핵심 9가지

1. 스프링은 Framework이다

 

2. 스프링은 오픈 소스이다

 

3. 스프링은 IoC 컨테이너를 가진다 ★

 

4. 스프링은 DI를 지원한다. ★

 

5. 스프링은 엄청나게 많은 필터를 가지고 있다.

 

6. 스프링은 엄청나게 많은 어노테이션을 가지고 있다.

 

7. 스프링은 MessageConverter를 가지고 있다. 기본값은 현재 Json이다.

각 나라의 언어가 다를때 각자의 언어로 보내면 번역이 바로 되지 않아 불편하다

그래서 중간언어라는것을 이용한다

※ 중간언어 : 모든 나라의 언어가 이해할수 있는/이해하기 쉬운 언어를 말함
과거에는 xml이었으나 json으로 바뀜

 

Message Converter은 개발자가 직접 컨버트할 필요없이 Message Converter가 자동으로 번역해줌

요창할때만 발생하는것이 아니라 상대방에게 응답받을때도 json데이터를 java object로 바꿔줌(Message Converter가 일어남)

따라서 java object의 형태로 데이터를 받을수 있음

※ jackson
: Message Converter의 기본 설정
Json 데이터로 변경해주는 라이브러리

 

8. 스프링은  BufferedReader와 BufferedWriter를 쉽게 사용할 수 있다.

전기선(전류)
: bit 단위 ( 0 1 0 1 1 0 ... )

영어 한 문자 → 8bit = 2^8 = 256
=> 256가지의 문자 전송 가능

한글의 경우 8bit 통신이 불가능하고 최소 16bit가 필요함
(알파벳은 별로 없는데 조합법이 너무 다양함)
[ 해결 ] 8비트씩 끊어 읽으면 한 문자씩 받을 수 있을거야
= 8bit = 1byte(바이트)(논리적인 단위) : 통신의 최소 단위

* 중국의 경우 3byte정도가 필요함(문자의 종류가 많기때문에)
→ 전세계적으로 하나의 문자를 표현하기위해 필요한 byte 수가 다 다름
=> 그래서 불편함을 해소하기 위해 유니코드에서 UTF-8 character Incoding을 제공

UTF-8 : 3byte 통신

 

InputStream을 읽는 하나의 단위 : byte

→ byte는 문자가 아니라 byte자체로 받아지기때문에 처리할때 머리아픔

그래서 이것을 문자로 변환하기위해 char등으로 casting을 해서 처리 ( 복잡 )

=> InputStreamReader (Class) 로 감싸면 byte를 문자로 바꿔서 문자 하나를 줌

                                                       배열로 여러개의 문자를 받을 수 있음 

* 배열의 단점 : 크기가 정해져 있어야 함

 

< 채팅을 구현한다고 했을 경우 >

- 6byte : 한글 두글자만 사용 가능

- 60byte : 한글을 20글자를 사용할수 있지만 짧은 글(작은 데이터)를 보낼때 낭비하게 됌

BufferedReader로 감싸서 데이터를 받게됌 = 가변길이의 문자를 받을수 있다!

BufferedWriter라는건 통신(Byte Stream)을 통해 데이터을 전송할 때 문자열로 가변길이 데이터를 쓰게 해주는 클래스

이것들을 직접 쓸 필요없이 어노테이션을 제공해줌

- @ResponseBody → Buffered Writer가 동작

- @RequestBody → Buffered Reader가 동작

 

9. 스프링은 계속 발전 중이다.

SpringBoot가 나오고나서 Spring을 사용하는것이 쉬워짐(실제 사용에 있어서 편리해짐)

728x90