1. 클라이언트 요청 수신 및 핸들러 결정
상위 맥락
03. Request Response Cycle < 02. MVC 아키텍처와 요청 흐름 < 01. Spring MVC1 기초와 아키텍처 < MVC < Spring < Web
핵심 정리
Spring MVC의 Request-Response Cycle은 클라이언트 요청이 DispatcherServlet으로 들어오면서 시작됩니다. 이 첫 단계의 핵심은 요청을 중앙에서 받고, 어떤 핸들러가 처리할지 결정하는 것입니다.
처리 흐름
- 클라이언트가 HTTP 요청을 보냄.
- DispatcherServlet이 요청을 가장 먼저 수신합니다.
- DispatcherServlet이 HandlerMapping에게 적절한 핸들러를 문의합니다.
- HandlerMapping이 URL, HTTP 메서드, @RequestMapping 정보를 기준으로 핸들러를 찾습니다.
- DispatcherServlet이 해당 핸들러를 실행할 HandlerAdapter를 준비합니다.
설계적 의미
DispatcherServlet은 프론트 컨트롤러로서 요청의 단일 진입점을 제공합니다. 그러나 직접 컨트롤러를 선택하거나 실행하지 않고, HandlerMapping과 HandlerAdapter에게 책임을 나눕니다.
이 구조는 검색과 실행을 분리합니다.
- HandlerMapping: 누가 처리할지 결정합니다.
- HandlerAdapter: 어떻게 실행할지 담당합니다.
이 분리 덕분에 스프링 MVC는 @Controller뿐 아니라 다양한 핸들러 타입을 지원할 수 있습니다.
AOP와 연결되는 의미
HandlerMapping이 반환하는 컨트롤러는 스프링 컨테이너가 관리하는 빈입니다. 따라서 AOP가 적용된 경우 실제 객체가 아니라 프록시 객체일 수 있습니다. DispatcherServlet과 HandlerAdapter를 통한 호출은 외부 호출이므로, 프록시 기반 AOP가 동작하기 좋은 구조가 됩니다.
한 문장 요약
요청 수신 및 핸들러 결정 단계는 DispatcherServlet이 요청을 받고 HandlerMapping을 통해 처리 대상을 찾는 Spring MVC 라우팅의 출발점입니다.
핵심 연결
AOP, 프록시, DispatcherServlet, HandlerMapping, HandlerAdapter와 함께 읽으면 좋습니다.