DispatcherServlet은 요청을 처리하고 적절한 응답을 렌더링하기 위해 특수한 빈에 위임합니다. "특수 빈"이란 프레임워크 계약을 구현하는 Spring 관리 객체 인스턴스를 의미합니다. 이러한 것들은 일반적으로 빌트인 계약에 포함되어 있지만, 속성을 사용자 지정하고 확장하거나 교체할 수 있습니다.
다음 표는 DispatcherServlet에서 감지하는 특수 빈을 나열합니다.
Bean type | Explanation |
---|---|
HandlerMapping |
요청을 핸들러에 매핑하고, 사전 및 사후 처리를 위한 인터셉터 목록과 함께 처리합니다. 매핑은 몇 가지 기준에 따라 결정되며, 해당 기준의 세부 사항은 HandlerMapping 구현에 따라 달라집니다. |
HandlerAdapter |
핸들러가 실제로 어떻게 호출되는지에 관계없이, DispatcherServlet이 요청에 매핑된 핸들러를 호출하도록 돕습니다. 예를 들어, 어노테이션이 달린 컨트롤러를 호출하려면 어노테이션을 확인해야 합니다. HandlerAdapter의 주요 목적은 DispatcherServlet을 이러한 세부 정보로부터 보호하는 것입니다. |
HandlerExceptionResolver |
예외를 해결하기 위한 전략으로, 예외를 핸들러, HTML 오류 뷰 또는 다른 대상에 매핑하는 것이 가능합니다. |
ViewResolver |
핸들러에서 반환된 논리적인 문자열 기반 뷰 이름을 응답으로 렌더링할 실제 뷰로 결정합니다. View Resolution과 View Technologies를 참고하세요 |
LocaleResolver , LocaleContextResolver |
국제화된 뷰를 제공하기 위해 클라이언트가 사용하는 로케일과 시간대를 확인합니다. |
ThemeResolver |
웹 애플리케이션에서 사용할 수 있는 테마를 결정합니다. 예를 들어, 개인화된 레이아웃을 제공합니다. |
MultipartResolver |
multi-part 파싱 라이브러리의 도움을 받아 multi-part request (예: 브라우저 양식 파일 업로드)을 파싱하기 위한 추상화입니다. |
표 아래에 MultipartResolver에 대한 상세한 설명을 첨부합니다. |
| FlashMapManager
| 일반적으로 리디렉션을 통해 한 요청에서 다른 요청으로 어트리뷰트를 전달하는 데 사용할 수 있는 "input" 및 "output" FalshMap을 저장하고 검색합니다. |
MultipartResolver는 Spring에서 파일 업로드를 처리하기 위해 사용하는 인터페이스입니다. 클라이언트가 전송한 multipart/form-data 형식의 요청(주로 파일 업로드)을 일반적인 HttpServletRequest가 아닌 파일 포함 요청으로 파싱해주는 역할을 합니다.
HTTP 요청 중 Content-Type이 multipart/form-data인 경우, 일반 폼 데이터와는 다르게 파싱해야 합니다. MultipartResolver는 이걸 대신 처리해서 파일과 일반 파라미터를 분리해줍니다.