Spring/Spring MVC

[Spring MVC] 1-2. DispatcherServlet: Special Bean Types

noahkim_ 2023. 10. 16. 01:44

  • DispatcherServlet는 WebApplicationContext의 대리 구성요소에 작업을 위임하여 요청을 처리합니다.
  • 대리 구성요소는 Spring IoC Container에 Bean으로 등록되어 적절하게 사용됩니다.
  • 대리 구성요소는 Bean으로 등록되므로 커스터마이징할 수 있습니다.

 

 

1. HandlerMapping

  • 들어오는 웹 요청을 적절한 핸들러에 연결하는 역할을 담당합니다.
  • 해당 요청을 처리하기 전과 후에 추가적인 작업을 수행하기 위해 인터셉터를 사용합니다.
  • 핸들러 매핑의 구현 타입에 따라 핸들러 매핑의 동작이 달라집니다.

 

주요 핸들러 매핑 구현체

RequestMappingHandlerMapping
  • @RequestMapping 애노테이션이 있는 메서드에 매핑합니다.

 

SimpleUrlHandlerMapping
  • URI 경로 패턴과 핸들러를 명시적으로 등록하여 매핑합니다.

 

2. HandlerAdapter

  • DispatcherServlet가 매핑 핸들러를 통해 응답을 처리하는 과정을 담당합니다.
  • 주요 목적은 요청 처리에 대한 세부 사항을 숨기는 것입니다.
    • DispatcherServlet로부터 핸들러마다 다르게 호출되어 처리되는 부분을 분리하고 숨깁니다.
    • 높은 수준의 모듈화와 확장성을 제공합니다.
  • 각 핸들러에 사용된 애노테이션을 해석하여 핸들러를 호출합니다.
    • 애노테이션을 통해 기능 처리를 요구할 수 있습니다. 
    • 애노테이션의 요구사항을 만족하기 위해 변환기, 처리기, 바인더를 사용합니다.

 

3. HandlerExceptionResolver

  • 예외를 해결하는 전략을 담당하는 컴포넌트입니다.
  • 예외를 핸들러에 매핑하거나, HTML 오류 뷰나 다른 대상에 매핑할 수 있습니다.

 

4. ViewResolver

  • 핸들러에서 반환된 논리적인 문자열 기반의 뷰 이름을 실제 뷰로 해석하여 응답에 렌더링하는 역할을 담당합니다.

 

5. LocaleResolver, LocaleContextResolver

  • 클라이언트의 사용 언어와 시간대를 해석합니다.
  • 이를 통해 국제화된 뷰를 제공할 수 있습니다.

 

6. ThemeResolver

  • 웹 애플리케이션에서 사용할 테마를 해석합니다.
  • 개인화된 레이아웃을 제공하기 위해 사용됩니다.

 

7. MultipartResolver

  • 파일 업로드 요청을 해석하기 위한 컴포넌트입니다.
  • 여기에는 여러 부분 파싱 라이브러리가 도움을 줍니다.

 

8. FlashMapManager

  • "입력" 및 "출력" FlashMap을 저장하고 검색하여, 주로 리디렉션을 통해 한 요청에서 다른 요청으로 속성을 전달하는 데 사용됩니다.
  • 이러한 모든 빈들은 DispatcherServlet이 웹 요청을 올바르게 처리하고 응답을 렌더링하는 데 필요한 구성 요소입니다.
  • 그들 각각은 특정 목적을 위해 설계되었으며, 필요에 따라 사용자 정의 및 확장이 가능합니다.

 

출처