메세지 컨버터는 어떻게 동작할까 - 2
@RequestBody
이렇게 등록된 메세지 컨버터들은 요청 본문이 있을 때 RequestResponseBodyMethodProcessor.class
의 resolveArgument
에 의해 변환되게 됩니다. 콜스택을 타고 들어가면 AbstractMessageConverterMethodArgumentResolver
에 등록된 메세지 컨버터들을 순회하며 canRead
메소드를 통해 해당 요청의 본문을 읽을 수 컨버터가 있다면, 해당 컨버터로 변환을 수행합니다. canRead
메소드는 변환할 컨트롤러의 @RequestBody
어노테이션이 붙은 파라미터 타입과 요청의 content-type
를 통해 변환 가능 여부를 판단합니다. 적절한 컨버터를 찾지 못했다면 null
이나 HttpMediaTypeNotSupportedException
을 던지게 됩니다.