- 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이 웹 요청을 올바르게 처리하고 응답을 렌더링하는 데 필요한 구성 요소입니다.
- 그들 각각은 특정 목적을 위해 설계되었으며, 필요에 따라 사용자 정의 및 확장이 가능합니다.
출처
'Spring > Spring MVC' 카테고리의 다른 글
[Spring MVC] 2-4. Handler Methods: Controller Advice (0) | 2023.10.17 |
---|---|
[Spring MVC] 2-3. Handler Methods: DataBinder (1) | 2023.10.17 |
[Spring MVC] 2-2. Handler Methods: Type Conversion (0) | 2023.10.17 |
[Spring MVC] 2-1. Handler Methods: Method Arguments (2) | 2023.10.17 |
[Spring MVC] 1-1. DispatcherServlet: Context Hierarchy (0) | 2023.10.16 |