ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring MVC에서 DispatcherServlet이 관리하는 Resolver의 종류와 실행 방식
    spring 2025. 2. 20. 21:10

    DispatcherServlet의 전체 실행 흐름

    1. 클라이언트 요청
    2. HandlerMapping 실행 → 컨트롤러 찾기
    3. HandlerAdapter 실행 → 컨트롤러 실행 방식 결정
    4. HandlerMethodArgumentResolver 실행 → 메서드 인자 바인딩
    5. 컨트롤러 메서드 실행
    6. 예외 발생 시 HandlerExceptionResolver 실행
    7. ViewResolver 실행 → View 렌더링
    8. FlashMapManager 실행 → 리다이렉트 시 데이터 유지
    9. 클라이언트에게 응답 반환

     

    DispatcherServlet이 관리하는 Resolver의 종류

    Spring MVC에서 DispatcherServlet이 관리하는 주요 Resolver들은 다음과 같습니다.

    Resolver 종류 역할 실행 시점
    HandlerMapping 요청 URL에 따라 적절한 컨트롤러(Handler)를 찾음 요청을 받을 때
    HandlerAdapter 컨트롤러 실행 방식을 결정 컨트롤러 실행 직전
    HandlerMethodArgumentResolver 컨트롤러 메서드의 인자를 바인딩 컨트롤러 메서드 실행 직전
    HandlerExceptionResolver 컨트롤러에서 발생한 예외를 처리 예외 발생 시
    ViewResolver 컨트롤러가 반환한 View 이름을 실제 View 객체로 변환 컨트롤러 실행 후
    LocaleResolver 사용자의 지역(locale) 정보를 결정 요청을 받을 때
    ThemeResolver 애플리케이션의 테마(theme) 정보를 결정 요청을 받을 때
    FlashMapManager Flash 속성을 관리하여 리다이렉트 시 데이터 전달 응답을 보낼 때

    2. 각 Resolver가 어떻게 실행되는지 (해결 과정)

    (1) 요청을 받으면 HandlerMapping 실행
    HandlerMapping은 요청 URL과 매칭되는 컨트롤러를 찾습니다.

    실행 과정
    1. 클라이언트가 /hello 요청을 보냄
    2. DispatcherServlet이 HandlerMapping 목록을 확인하여 적절한 컨트롤러를 찾음
    (2)HandlerAdapter 실행
    HandlerAdapter는 컨트롤러의 실행 방법을 결정합니다.

    실행 과정
    1. HandlerMapping이 컨트롤러를 찾음
    2. HandlerAdapter가 컨트롤러를 실행하는 방법을 결정
      • 예: @RequestMapping을 사용하는 컨트롤러는 RequestMappingHandlerAdapter가 실행
    (3) 컨트롤러 메서드 실행 전에 HandlerMethodArgumentResolver 실행
    컨트롤러 메서드의 인자를 자동으로 변환하여 주입합니다.

    실행 과정
    1. RequestMappingHandlerAdapter가 컨트롤러 메서드를 실행하기 전에 HandlerMethodArgumentResolver를 실행
    2. 요청 파라미터, @RequestBody, @PathVariable 등의 데이터를 변환하여 메서드 인자로 전달
    (4) 컨트롤러 실행 중 예외 발생 시 HandlerExceptionResolver 실행
    컨트롤러에서 예외가 발생하면 HandlerExceptionResolver가 이를 처리합니다.
    실행 과정
    1. 컨트롤러에서 예외 발생
    2. DispatcherServlet이 등록된 HandlerExceptionResolver를 실행
    3. 적절한 예외 처리 후 사용자에게 응답 반환

      컨트롤러에서 IllegalArgumentException이 발생하면 ExceptionHandlerExceptionResolver가 실행되어 적절한 응답을 반환합니다.

     

     

Designed by Tistory.