객체를 바이트 스트림으로 바꾸는 과정
직렬화의 기준으로
포맷으로 Java 포맷, XML, JSON등이 있다.
자바 포맷이 더 빠르지만, 가독성과, 플랫폼의 다향성때문에 사실상 JSON이 표준
바이트 스트림 : 8비트의 연속된 데이터 흐름, 컴퓨터에서 데이터를 바이트 단위로 처리하기 때문에 기본 I/O에서 사용된다.
바이트 스트림을 객체로 바꾸는 과정
스프링은 @ResponseBody
를 사용할 때 HttpMessageConverter가 동작한다.
HttpMessageConverter 인터페이스를 열어보자.
read와 write 메서드가 있는데 설명을 보면 canRead, canWrite 메서드가 반드시 true를 반환해야 한다.
메세지 컨버터가 클래스 또는 미디어 타입을 지원하는지 체크한 뒤, 읽거나 쓰기를 하는 모습.
HttpMessageConver를 상속받으며 JSON을 변환하기 위한 추상클래스 AbstractJackson2HttpMessageConverter
를 알아보자
readInternal은 HTTP 요청에서 JSON 데이터를 읽어서 Object로 변환한다.
여기서 사용되는 readJavaType 메서드를 찾아보자.