해결된 질문
작성
·
276
0
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요.
스프링 MVC -1편 스프링MVC-컨트롤러 통합 강의를 시청중에 궁금증이 생겨서 질문드립니다.
어노테이션을 이용해서 컨트롤러를 매핑하면 해당 컨트롤러가 스프링빈에 등록되고 Spring mvc의 컨트롤러로 인식되어서 HandlerMapping과 HandlerAdapter를 통해서 처리되는것은 이해하였는데요.
이해하기론 컨트롤러에 정의 하는 메소드는 개발자가 정의 하는 부분이고 메소드를 실행하는것은 프레임워크가 처리하는것인데요. 메소드마다 매개변수가 상이한데 프레임워크는 해당 메소드의 매개변수를 어떤식으로 넣어주는것인가요?
예를들어
@RequestMapping("/1")
public ModelAndView process1(){
//생략
}
@RequestMapping("/1")
public ModelAndView process2(HttpServletRequest request, HttpServletResponse response) {
생략
}
이런식의 두개의 Mapping 메소드?가 있을경우에 이를 실행하는것은 개발자가 컨트롤하는것이 아닌 프레임워크가 컨트롤하는것인데요. 내부적으로 어떤식으로 판단해서 매개변수가 있는 메소드에 값을 넣어주는지 궁금합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. Super Novice님의 질문에 대한 답변을 찾아보았습니다.
스프링 프레임워크에서 @Controller
어노테이션이 붙은 클래스의 메소드들은 핸들러 혹은 컨트롤러 메소드라고 불리며, HTTP 요청에 따라 스프링 MVC가 자동으로 매핑하며 처리합니다. Super Novice님께서 질문하신 부분은 핸들러 메소드의 매개변수에 대한 구체적인 처리 방식입니다.
스프링 MVC는 ‘Argument Resolver’라는 기능을 통해 메소드의 매개변수를 해석합니다. 각 매개변수에 대해서 스프링은 해당 타입을 처리할 수 있는 ‘Argument Resolver’를 찾아 연결하고, 이를 통해 필요한 객체를 매개변수로 전달해줍니다. 예를 들어, HttpServletRequest
, HttpServletResponse
같은 서블릿 API 관련 객체나, ModelAndView
, Model
같은 스프링 MVC의 특정 객체들이 이에 해당합니다.
아래의 링크들은 질문과 유사한 상황에서 스프링 MVC의 핸들러 메소드와 매개변수 처리에 대해 설명하고 있으며, 관련된 더 자세한 정보를 제공합니다:
이러한 링크들은 질문자분과 비슷한 상황에 대한 선생님들의 답변을 포함하고 있으며, 스프링 MVC의 핸들러 메소드와 관련된 내부 작업 방식에 대해 추가적인 통찰을 제공합니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
그럼 Argment Resolver란 녀석에 대해서 알아보면 되겠네요. 답변 감사드립니다.