Programming/For interview

[Spring] HandlerMethodArgumentResolver

LazyCat 2024. 12. 11. 18:10
반응형

🤍 HandlerMethodArgumentResolver 인터페이스

Spring MVC에서 컨트롤러 메소드의 매개변수를 동적으로 바인딩하기 위해 사용되는 인터페이스입니다.

 

 

🤍 사용 목적

Spring MVC는 HTTP 요청이 컨트롤러로 들어올 때, 요청 데이터를 기반으로 컨트롤러 메서드의 매개변수를 생성하고 주입하는데, 이 과정에서 기본 제공되는 바인딩 로직 외에 사용자 정의 로직을 추가하고 싶을 때 이 인터페이스를 사용합니다.

 

간단히 말해서, 지원하지 않는 매개변수 바인딩 로직을 구현하기 위해 사용됩니다.

 

🤍 주요 메소드

1. supportsParameter(MethodParameter parameter)

  • 특정 매개변수가 이 리졸버에 의해 처리될지 결정한다
  • true 반환 시, 해당 매개변수는 이 리졸버에서 처리된다
    public boolean supportsParameter(MethodParameter parameter) {
        // 매개변수가 @AuthenticatedUser 어노테이션을 가졌는지 확인
        return parameter.hasParameterAnnotation(AuthenticatedUser.class);
    }

 

2. resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory)

  • supportsParameter가 true인 경우, 이 메서드가 호출됩니다.
  • 요청 데이터, 쿠키, 헤더, 세션 등 다양한 정보를 기반으로 매개변수를 생성하고 반환합니다.
    @Override
    public Object resolveArgument(
            MethodParameter parameter,
            ModelAndViewContainer mavContainer,
            NativeWebRequest webRequest,
            WebDataBinderFactory binderFactory) {
        // 세션에서 사용자 정보를 가져와서 반환
        HttpServletRequest request = (HttpServletRequest) webRequest.getNativeRequest();
        return request.getSession().getAttribute("user");
    }

 

반응형