ArgumentResolver
애노테이션 기반의 컨트롤러는 매우 다양한 파라미터를 사용할 수 있었다.
@RequestParam, @ModelAttribute 는 HTTP 요청 파라미터 데이터를 사용하고,
@RequestBody 는 HTTP 메시지 바디의 데이터를 사용하는 등 애노테이션으로 사용할 데이터를 구분하였다.
이렇게 애노테이션에 따라 파라미터를 유연하게 처리할 수 있었던게 바로 ArgumentResolver 덕분이다.
동작 방식
아래는 HandlerMethodArgumentResolver 구현체이다.
public class AuthResolver implements HandlerMethodArgumentResolver {
@Override
public boolean supportsParameter(MethodParameter parameter) {
return false;
}
@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
return null;
}
}
1. supportsParameter()
ArgumentResolver 의 supportsParameter() 를 호출해서 해당 파라미터를 지원하는지 체크한다.
2. resolveArgument()
supportsParameter() 의 값이 true 이면 resolveArgument() 를 호출해서 실제 객체를 생성한다.
이렇게 생성된 객체가 컨트롤러 호출시 아래의 그림처럼 넘어간다.

관련글
'백엔드 > Spring' 카테고리의 다른 글
yml 파일 분리해보기 (0) | 2024.04.26 |
---|---|
@ConfigurationProperties로 환경 변수 관리 (0) | 2023.10.08 |
Interceptor 써보기 (0) | 2023.09.29 |
Filter (0) | 2023.09.29 |
Interceptor (0) | 2023.09.29 |