복붙노트

[SPRING] Spring MVC 컨트롤러 메소드 매개 변수는 어떻게 작동하나요?

SPRING

Spring MVC 컨트롤러 메소드 매개 변수는 어떻게 작동하나요?

STS에서 생성 된 템플리트를 사용하여 Spring MVC 프로젝트를 만들었으며 이것은 컨트롤러에서 생성 된 것이다.

@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model) {
    //stuff
}

내 질문은, 로케일과 모델 변수가 홈 메소드에 어떻게 전달 되는가입니다.

또한 메서드에 전달할 수있는 개체의 가능한 옵션은 무엇입니까?

해결법

  1. ==============================

    1.일반적인 대답은 "봄 마법"입니다. 그러나 Spring 레퍼런스 가이드의 MVC 장에있는 "지원되는 핸들러 메소드 인수와 리턴 타입"은 당신의 질문에 대한 정확한 답을 가지고있다.

    일반적인 대답은 "봄 마법"입니다. 그러나 Spring 레퍼런스 가이드의 MVC 장에있는 "지원되는 핸들러 메소드 인수와 리턴 타입"은 당신의 질문에 대한 정확한 답을 가지고있다.

  2. ==============================

    2.기술 답변은 Spring MVC HandlerAdapter 메커니즘을 사용하는 것입니다.

    기술 답변은 Spring MVC HandlerAdapter 메커니즘을 사용하는 것입니다.

    Spring의 DispatcherServlet을 통해 처리기 어댑터가 생성되고 각 요청 된 요청에 대해 구성됩니다.

    이 경우 "봄 마술"은 봄 mvc 패키지에있는 AnnotationMethodHandlerAdapter입니다. 이 어댑터는 기본적으로 요청에 연결된 HTTP 경로, HTTP 메서드 및 요청 매개 변수를 기반으로 HTTP 요청에 "매핑"됩니다.

    Spring dispatcher 서블릿이 경로 "/"로 요청을 식별하면 RequestMapping 어노테이션으로 주석 된 컨테이너에있는 메소드를 검사합니다.

    귀하의 경우에는 그것을 찾아 ...

    그럼 진짜 마법이 시작됩니다.

    java reflection을 사용하면 Spring은 컨트롤러 메소드의 인수를 해결할 것이다. 따라서 귀하의 경우 Locale과 모델이 자동으로 전달됩니다. HttpSession과 같은 다른 웹 관련 매개 변수가 포함되어 있으면 해당 매개 변수가 전달됩니다.

  3. from https://stackoverflow.com/questions/8372957/how-does-spring-mvc-controller-method-parameter-work by cc-by-sa and MIT license