인프런 커뮤니티 질문&답변

경민님의 프로필 이미지
경민

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

요청 매핑 헨들러 어뎁터 구조

HandlerMethodArgumentResolver의 resolveArgument()의 호출 위치

해결된 질문

작성

·

202

·

수정됨

2

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]
RequestMappingHandlerAdapter에서 컨트롤러의 파라메터에서 필요로 하는 객체를 반환받아서 ArgumentResolver의 supportsParameter()를 통하여 반환받은 객체가 있는지 검증 후 있으면 ArgumentResolver의 resolveArgument()를 통하여 컨트롤러를 호출해준다고 이해했습니다.

 

그런데 핸들러 어댑터 로직을 살펴보니 supportsParameter()를 통해 검증해주는 로직은 있지만 resolveArgument()를 호출해주는 로직이 존재하지 않는데 어디서 resolveArgument()를 통하여 컨트롤러를 호출할 수 있는 건지 resolveArgument()의 호출 위치가 궁금합니다 !

답변 1

2

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 경민님

invokeHandlerMethod()에 보시면 다음 코드를 호출하는 부분을 확인할 수 있습니다.

invocableMethod.invokeAndHandle(webRequest, mavContainer);

이 안에 가보면 다음 코드가 있습니다.

Object returnValue = invokeForRequest(webRequest, mavContainer, providedArgs);

이 코드를 들어가 보면 다음 코드를 확인할 수 있습니다.

Object[] args = getMethodArgumentValues(request, mavContainer, providedArgs);

감사합니다.

경민님의 프로필 이미지
경민
질문자

감사합니다!!

경민님의 프로필 이미지
경민

작성한 질문수

질문하기