inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

스프링 MVC - 시작하기

getHandler() 에서의 로직과 그 이후

해결된 질문

288

김지호

작성한 질문수 9

0


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

[질문 내용]

안녕하세요. doDispatcher에서의 getHandler() 코드를 보다가 제가 나름대로 정리해본 것이 맞는 지 질문드립니다.


한 url 에서 요청이 오면, 핸들러 맵핑 조회에서 1순위가 RequestMappingHandlerMapping 이므로, 먼저 getHandler()의 while 문 내부 HandlerMapping mapping 에 RequestMappingHandlerMapping이 대입된다.

// 스프링 getHandler() 코드 일부 발췌

if (this.handlerMappings != null) {
    Iterator var2 = this.handlerMappings.iterator();

    while(var2.hasNext()) {
        HandlerMapping mapping = (HandlerMapping)var2.next();
        HandlerExecutionChain handler = mapping.getHandler(request);
        if (handler != null) {
            return handler;
        }
    }
}

 

다음 줄의 mapping.getHandler(request)를 통해 @Controller가 붙은 클래스 중, 요청 url와 맞는 @RequestMapping(”url”)이 붙여진 메소드를 보유한 클래스를 핸들러로 가져온다.

디스패처서블릿이 이 핸들러와 맞는 어댑터(RequestMappingHandlerAdapter)를 찾아오고,

어댑터.handle() 을 통해 @RequestMapping(”url”)이 붙여진 메소드가 실행된다.

 

제가 생각한것이 맞는 지 궁금하여 질문드립니다.

감사합니다.

 

spring mvc

답변 2

0

David

안녕하세요. 김지호님, 공식 서포터즈 David입니다.

전반적으로 잘 이해하고 계신 것 같습니다:)

감사합니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

김지호님의 질문과 관련해, 핸들러 매핑과 핸들러 어댑터에 대한 동작을 설명하며 getHandler() 메서드의 로직과 그 이후의 과정에 대해 질문하신 것으로 이해했습니다. 김지호님의 질문이 “핸들러 매핑과 핸들러 어댑터”의 동작 과정을 이해하는 데 초점이 맞춰져 있는 것 같습니다.

제공된 정보에 따르면, “제가 생각하고 있는 동작과정 피드백을 부탁드립니다.” 라는 제목의 질문에서 비슷한 주제에 대한 확인을 요청하는 인사이트와 답변이 있었습니다. 이 답변은 스프링 MVC의 DispatcherServlet에서 getHandler() 메서드의 실행 과정 및 핸들러 매핑과 핸들러 어댑터의 작동 원리에 대해 구체적인 설명을 제공합니다.

제가 생각하고 있는 동작과정 피드백을 부탁드립니다. 질문에서 김영한 강사님은 핵심적인 동작 과정에 대한 정확한 설명과 피드백을 제공하셨습니다. 이는 김지호님의 현재 질문 내용과 매우 유사한 주제를 다루고 있어, 김지호님의 질문에 대한 보다 명확한 이해와 답변을 제공할 수 있을 것으로 기대됩니다.

질문에 있어서, 맞는 핸들러를 찾는 과정과 이후 핸들러 어댑터를 통한 로직 실행에 대한 김지호님의 이해는 기본적으로 정확해 보입니다. RequestMappingHandlerMapping이 우선순위를 가지며, URL 매칭을 통해 해당되는 핸들러(Controller)를 찾고, 그에 맞는 HandlerAdapter(RequestMappingHandlerAdapter)가 핸들러의 메서드(@RequestMapping으로 매핑된 메서드)를 실행한다는 개념입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

servlet과 container에 대한 질문입니다

0

24

1

api를 어느 컨트롤러에 작성해야하는지는 어떤 기준으로 해야하나요?

0

62

1

jsp 의존성 수정 요청

0

77

2

요즘 웹 서버가 주로 사용되는 이유는 SPA 구조 때문일까요 ?

0

142

1

save() 메서드 문의

0

66

1

절대 경로로 templates/basic 하위 파일 열면 css 적용 안되는 현상

0

99

1

request-body-json

0

83

2

MVC 패턴의 적용 단위

0

95

1

RequestMapping을 이용한 핸들러, 어댑터

0

118

2

save 후 결과화면

0

88

2

jsp를 이용한 view

0

97

1

application.properties에 debug 추가해도 결과가 똑같습니다.

0

177

1

수업 코드 제공 관련 문의

0

97

2

RequestMappingHandlerAdapter의 Controller 호출 과정

0

99

3

파일 오픈 시

0

68

1

스프링 배치 관련

0

77

1

@RequestParam의 defaultValue가 blank 값도 처리하는 지 여부

0

112

1

postman으로 /request-body-json-v1 호출시 500 error

0

94

1

프론트엔드와 백엔드의 mvc, rest api에 대한 질문

0

78

1

모델의 역할과 계층 분리에 대한 이해 차이 + 추가질문

0

111

1

console log 출력 관련 질문입니다.

0

74

1

애플리케이션이 실행 되지 않습니다 ㅠㅠㅠ

0

139

1

html 변경하는 부분 적용 문제

0

103

1

한글 깨짐

0

76

2