javax.servlet.GenericServlet
javax.servlet.http.HttpServlet
org.springframework.web.servlet.HttpServletBean
org.springframework.web.servlet.FrameworkServlet
org.springframework.web.servlet.DispatcherServlet
DispatcherServlet은 요청을 처리하고 적절한 응답을 렌더링하기 위해서 special bean에 위임한다.
Special bean은 Spring 관리 객체 인스턴스(프레임워크 규약 구현)를 의미한다.
일반적으로 기본 규약으로 되어있지만 커스텀하게 속성을 확장, 교체할 수 있다.
HandlerMapping
구현에 따른다.HandlerMapping
구현은 RequestMappingHandlerMapping
(@RequestMapping 어노테이션 사용한 매서드) SimpleUrlHandlerMapping
(URI 경로패턴 매핑)View
이름을 기준으로 렌더링할 뷰 객체를 정해주는 역할-DispatcherServlet
은 위의 special bean들 각각에 대하여 WebApplicationContext
를 체크한다. 만약 매칭되는 빈이 없으면 DispatcherServlet.properties 파일에 나열된 default로 정의된다.
WebApplicationContext는 컨트롤러와 프로세스의 다른 요소가 사용할 수 있는 속성으로 요청에서 검색되고 바인딩된다. 기본적으로 DispatcherServlet.WEB_APPLICATION_CONTEXT_ATTRIBUTE 키에 바인딩된다.
dispatcherServlet은 getHandler()메서드를 사용하여 디스패처에 구성된 HandlerAdapter 인터페이스의 모든 구현체를 찾는다. 발견된 구현체들은 나머지 프로세스를 통해서 handle() 메서드로 request를 처리한다.
LocaleResolver는 선택적으로 요청에 바인딩되어 프로세스의 요소가 로케일을 확인하도록 한다.
ThemeResolver는 View와 같은 요소가 사용할 테마를 결정하도록 하는 요청에 선택적으로 바인딩된다.
request가 MultipartFiles인지 확인해서 MultipartResolver가 지정된다면, 추가 처리를 위해 MultipartHttpServletRequest에 래핑된다.
WebApplicationContext
에 선언된 HandlerExceptionResolver
빈은 request 처리 중엔 발생한 예외를 해결하는데 사용된다.. 커스텀할 수 있다.