본문 바로가기

프레임워크/Spring boot

Resolver 란?

HandlerMethodArgumentResolver

  • HandlerMethodArgumentResolver는 Interface로써, Controller의 Argument(Parameter)에 지정된 변수들을,Annotation이나 객체의 Type에 따라서 Resolver를 먼저 거쳐실제 Data를 Controller에 넘겨주는 역할을 수행한다
  • Controller에 들어오는 Argument(Parameter)를 가공(암호화 > 복호화) 하거나,Argument(Parameter)를 추가하거나 수정해야 하는 경우에 사용한다.

사용이유

  • HandlerMethodArgumentResolver를 사용하는 이유는, 매개변수로 사용되는 인자에 대해 공통적으로 처리해야할 로직등이 있을 경우, 중복 코드를 줄이고 공통 기능으로 추출하여 사용할 수 있다.

동작 방식

  • Client Request 요청
  • Dispatcher Servlet에서 해당 요청 처리
  • Client Request에 대한 Handler Mapping
  • RequestMapping에 대한 매칭 (RequestMappingHandlerAdapter가 수행)
  • Interceptor 처리
  • Argument Resolver 처리 <-- Argument Resolver 실행 지점
  • Message Converter 처리

정리하자면 특정 Request가 Handler로 Mapping되는 과정에서 invoke 되기전,Interceptor > Resolver > MessageConverter 순으로 처리된 후, Controller의 Method가 invoke 된다.