12-1. AbstractJackson2HttpMessageConverter → ObjectMapper: readValue()
이 단계는 HTTP 본문(JSON)을 DTO 객체로 역직렬화하는 단계입니다.
이번 단계의 역할
컨트롤러 파라미터 후보가 될 DTO를 요청 본문에서 생성하는 단계입니다.
호출 흐름 요약
RequestResponseBodyMethodProcessor가 메시지 컨버터 읽기를 요청합니다.AbstractJackson2HttpMessageConverter가JavaType을 계산합니다.ObjectMapper.reader().forType(...)를 구성합니다.readValue(...)가 실행되어 DTO 객체가 만들어집니다.
호출 흐름 다이어그램
sequenceDiagram
participant RR as RequestResponseBodyMethodProcessor
participant Conv as AbstractJackson2HttpMessageConverter
participant Mapper as ObjectMapper
participant DTO
RR->>Conv: readWithMessageConverters(...)
Conv->>Mapper: reader().forType(javaType).readValue(...)
Mapper-->>Conv: DTO
Conv-->>RR: DTO
RR-->>DTO: 파라미터 후보
핵심 코드
// AbstractJackson2HttpMessageConverter.java
JavaType javaType = getJavaType(type, contextClass);
ObjectReader objectReader = objectMapper.reader().forType(javaType);
return objectReader.readValue(inputStream);
코드 해설
이 단계는 순수 역직렬화 단계입니다. 아직 검증은 시작되지 않았고, JSON이 정상적으로 객체로 바뀌어야만 다음 단계로 넘어갈 수 있습니다.
설계 의도
역직렬화와 검증을 분리해, 파싱 실패를 먼저 드러내고 이후 단계 책임을 명확히 나누기 위한 구조입니다.
다음 단계 연결
다음 문서 12-2에서는 생성된 DTO에 대해 WebDataBinder와 SmartValidator가 검증을 수행하는 과정을 봅니다.
← 이전: 12. DispatcherServlet → HandlerMethodArgumentResolver | 다음: 12-2. WebDataBinder → SmartValidator