엔지니어로 가는 길

DispatcherServlet이 사용하는 '특별한 빈'은 어떻게 설정되는가 본문

프로그래밍/Spring

DispatcherServlet이 사용하는 '특별한 빈'은 어떻게 설정되는가

탐p슨 2020. 3. 5. 15:31
728x90

여기서는 DispatcherServlet이 위임하는 특별한 빈들이 어떻게 설정되는지에 대해 알아본다.

 

먼저 DispatcherServlet은 WebApplicationContext에 가서 도움을 요청할 '특별한 빈'이 등록되어있는지 확인한다. 만약 등록되어 있으면 해당 빈을 특별한 빈으로 설정하고, 등록되어 있지 않으면 DispatcherServlet.properties에서 설정한 디폴트 타입의 빈을 이용한다.

 

 

DispatcherServlet.properties

 

 

DispatcherServlet.properties에 설정된 default 빈들을 보면 아래와 같다.

 

HandlerMapping

BeanNameUrlHandlerMapping

RequestMappingHandlerMapping

RouterFunctionMapping

 

HandlerAdapter

HttpRequestHandlerAdapter

SimpleControllerHandlerAdapter

RequestMappingHandlerAdapter

HandlerFunctionAdapter

 

HandlerExceptionResolver

ExceptionHandlerExceptionResolver

ResponseStatusExceptionResolver

DefaultHandlerExceptionResolver

 

ViewResolver

InternalResourceViewResovler

 

LocaleResolver

AcceptHeaderLocaleResolver

 

RequestToViewNameTranslater

DefaultRequestToViewNameTranslater

 

FlashMapManager

SessionFlashMapManger

 

 

 

살펴볼 점은 아래와 같다.

 

@지난 시간에 살펴본 '특별한 빈'인데 DispatcherServlet.properties에 없는 빈

: ThemeResolver, MultipartResolver

 

@지난 시간에 살펴본 '특별한 빈'에 없던 빈인데 DispatcherServlet.properties에 있는 빈

: RequestToViewNameTranslater

 

@DispatcherServlet이 위임하는 '특별한 빈'은 종류에 따라 없을 수도, 하나일 수도, 여러개일 수도 있다.

 

 

참고 자료

https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-config

728x90
Comments