[MVC] Argument Resolver + Message Converter

김형진·2023년 5월 24일
0

핸들러 어댑터는 Dispatcher Servlet으로부터 HttpServletRequest 와 HttpServletResponse를 전달받아 자신이 호출할 handler메소드가 원하는 파라미터로 변환하여 전달한다.

예를 들어 ArestController의 A메소드가 호출 시 Member객체를 파라미터로 받는다면, 핸들러 어댑터는 디스패쳐 서블릿으로부터 전달받는 request객체 내에 있는 요청 정보를 처리하여 Member객체로 변환하여 핸들러에 전달한다.

그냥 변환이 되는 것은 아니고, Spring이 제공하는 HandlerMethodArgumentResolver(이하 ArgumentResolver) 인터페이스를 구현하는 여러 가지의 구현체들이 각각의 타입을 대신 변환해준다.

예를 들어 String 타입의 파라미터를 전달받기를 원한다면, String타입으로의 변환을 지원하는 ArgumentResolver를 통해 String 데이터를 생성하여 핸들러에 넘겨주는 식이다.
Member 객체를 전달받기를 원한다면, 이를 변환해주는 역할을 가진 ArgumentResolver가 또 있을 것이다.

그리고 ArgumentResolver는 데이터를 원하는 타입의 객체로 변환하는 과정에서 Message Converter를 사용한다.

메세지 컨버터는 byte, string, json형태의 객체로 변환해주는 세 가지의 컨버터가 있으며 순서대로 우선순위를 갖는다.

profile
히히

0개의 댓글