해결된 질문
작성
·
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);
감사합니다.
감사합니다!!