Argument Resolver에 대해서 알아보자
Argument Resolver는 무엇일까요?
뜻을 직역해보면 "인수를 해결한다" 입니다. 그러나, 직역만으로는 Argument Resolver가 무엇을 하는 친구인지 잘 감이 오질 않습니다.뭐 "인수"와 관련되어 있다는 것 정도는 알 수 있을 거 같습니다.
Argument Resolver
ArgumetResolver는 Handler가 필요로 하는 다양한 파라미터 값을 생성해주는 역할을 한다고 합니다. 이렇게 설명을 들으니 "인수를 해결한다" 라는 뜻이 무슨 의미인 지 감이 오는 것 같습니다.
그리고, Argument Resolver는 축약된 이름이고 실제로는 HandlerMethodArgumentResolver 입니다.
Dispathcer Servlet에서 RequestMappingHandlerAdapter를 호출하고, Adapter가 Handler를 호출합니다.
이때, ArgumentResolver가 Request 관련 정보들을 Handler가 필요로 하는 Arguement로 변환하여 줍니다.
HandlerMethodArgumentResolver
HandlerMethodArgumentResolver를 구현하여 개발자가 원하는 Custom Resolver를 만들 수 있습니다.
HandlerMethodArgumentResolver의 supportsParameter는 전달된 parameter로 Adapter가 원하는 파라미터를 만들어 줄 수 있는 지를 확인합니다. 만약, true를 반환한다면 resolveArgument 메서드를 이용해서 Adapter가 원하는 파라미터로 변경합니다.
언제 사용할 수 있는가?
매개변수로 사용되는 인자에 대해 공통적으로 처리해야할 로직이 있을 경우 사용합니다.
사용할 경우 공통 변환 로직을 한 곳에서 관리할 수 있기 때문에 관리 포인트가 줄어들어 유지보수에 유리합니다.
이상입니다.