클라이언트가 서버에 HTTP 요청을 보내면, Dispatcher Servlet
이 받은 URI을 통해 핸들러를 조회한다. 그리고 핸들러를 처리할 수 있는 핸들러 어댑터를 조회하고, 처리할 수 있는 핸들러 어댑터를 발견하면 그 핸들러 어댑터를 실행한다. 핸들러 어댑터의 handler
를 호출하고 값을 반환 받으면 viewResolver
가 알맞은 view를 반환하고, 클라이언트에게 view를 반환한다.
이때, 컨트롤러(핸들러 어댑터)는 컨트롤러마다 다양한 매개변수를 가지고 있다. 클라이언트는 그저 HTTP 요청만 했는데, 컨트롤러의 매개변수는 누가, 어디서 생성해서 넣어주는건가?
이것을 처리해주는 것이 Argument Resolver
이다.
Argument Resolver
는 호출된 컨트롤러의 파라미터, 애노테이션 정보를 기반으로 전달할 데이터를 생성해준다. 전달할 데이터가 준비되면 컨트롤러를 호출하면서 데이터를 전달한다.