ArgumentResolver란?
•
컨트롤러 클래스의 메소드 매개변수에 사용자가 임의의 값을 전달하고자할 때 사용한다.
•
HttpServletRequest, Model, @RequestParam, @ModelAttribute 등으로 작성된 전달 데이터 기반으로 다양한 파라미터 값을 사용할 때 필요한 인터페이스다.
•
주로 컨트롤러 단에서 중복 코드를 제거하려는 목적으로 사용한다.
•
HanlderMethodArgumentResolver를 구현한 ArgumentResolver를 WebMvcConfig를 구현한 설정 파일에 등록하여 사용한다.
동작방식
•
기본적으로 인터셉터가 종료된 후 동작된다.
1.
Handler를 호출하여 매개변수 값을 확인한 후 정보를 전달받는다.
2.
ArgumentResolver를 호출하여 해당 매개변수 객체를 생성을 요구한다.
public interface HandlerMethodArgumentResolver {
boolean supportsParameter(MethodParameter parameter);
@Nullable
Object resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer, NativeWebRequest webRequest, @Nullable WebDataBinderFactorybinderFactory) throws Exception;
}
Java
복사
•
ArgumentResolver를 호출하면 supportsParameter를 호출하여 해당 매개변수를 지원하는 지 체크한다.
•
지원하는 경우, resolveArgument를 호출하여 실제 매개변수 객체를 생성하고 다시 Handler를 호출한다.
3.
Parameter의 객체를 생성하여 Handler를 호출함과 도잇에 객체 또한 같이 전달한다.