HandlerMethodArgumentResolver

김종완·2022년 7월 8일

🌴인트로


기존에는 소셜 로그인과 spring security를 사용한 로그인을 지원하고 컨트롤러에서 유저 정보를 받아올 때는 2개의 파라미터를 생성하고 다른 방식으로 받아왔었다. 하지만 하나의 어노테이션으로 해결할 수 있는 방식을 찾아서 블로그에 정리해본다.

🍄HandlerMethodArgumentResolver


이름이 긴 인터페이스이다.

Strategy interface for resolving method parameters into argument values in the context of a given request.
Since:
3.1

해당 인터페이스의 설명을 가지고 와보았다.
해석할 수 있는 영어지만 이 문장의 의미 전달이 잘 되지 않아서 구글 번역을 돌려 보았다.

주어진 요청의 컨텍스트에서 메소드 매개변수를 인수 값으로 해석하기 위한 전략 인터페이스

위 의미를 좀 더 쉽게 이해하기 위해 예를 들면, Controller에 메소드를 보면 @PathVariable, @RequestParam, @RequestBody 어노테이션을 쉽게 접할 수 있다. 해당 메소드 덕분에 변수나 특정 객체 타입으로 값을 변환할 수 있다. 그러면, 어노테이션을 달면 해당 작업은 누가 처리하고 있는가? 바로 HandlerMethodArgumentResolver라고 할 수 있다. 해당 인터페이스를 상속받은 클래스가 자신이 처리할 어노테이션이 붙었는지 그리고 해당 타입이 자신이 지원할 타입이 맞는지를 알아네는 supportsParameter를 수행하고 true/false 값을 반환한다. 만약에 true 값을 반환 하였다면 resolveArgument 메소드를 실행하여 로직을 실행 후 값을 return 하게 된다 그 return 값이 이제 어노테이션을 달아 주었던 값에 담기게 되는 것이다.

profile
개발에 재미를 느끼며 꾸준히 성장하는 개발자 김종완 입니다.

0개의 댓글