스프링 MVC 구성 요소인 DispatcherServlet.properties에 어떤 기본 전략 빈들이 등록되어 있는지 알아보자.
org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping,\
org.springframework.web.servlet.function.support.RouterFunctionMapping
URL을 /로 시작하는 이름의 Bean과 매핑시켜주는 HandlerMapping 구현체
@Controller 클래스 내 @RequestMapping 어노테이션을 보고 RequestMappingInfo 객체를 만들어주는 HandlerMapping 구현체
RouterFunctions를 지원하는 HandlerMapping 구현체
org.springframework.web.servlet.HandlerAdapter=org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter,\
org.springframework.web.servlet.function.support.HandlerFunctionAdapter
HttpRequestHandler를 구현한 클래스를 컨트롤러로 사용할 때(Servlet과 유사) 이를 처리하는 HandlerAdapter 구현체
Controller 인터페이스를 구현하여 만든 컨트롤러 클래스에 요청을 보낼 때 사용하는 HandlerAdapter 구현체
@Controller 클래스 내 @RequestMapping 어노테이션 핸들러 매핑(RequestMappingHandlerMapping)을 처리하는 HandlerAdapter 구현체
RouterFunRouterFunctionMapping를 처리하기 위한 HandlerFunctions를 지원하는 HandlerAdapter 구현체
org.springframework.web.servlet.HandlerExceptionResolver=org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver,\
org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver,\
org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver
@ExceptionHandler 어노테이션이 붙은 메소드를 처리하는 HandlerExceptionResolver 구현체
@ResponseStatus 어노테이션이 붙은 메소드가 반환하는 HTTP 상태코드를 처리하는 HandlerExceptionResolver 구현체
표준 Spring MVC 예외를 해당 HTTP 상태 코드로 변환하는 HandlerExceptionResolver 구현체
org.springframework.web.servlet.LocaleResolver=org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver
"accpet-language"라는 요청 헤더에 명시된 기본 Locale 정보를 사용하는 LocalResolver 구현체
org.springframework.web.servlet.ThemeResolver=org.springframework.web.servlet.theme.FixedThemeResolver
고정된 테마를 사용하는 ThemeResolver 구현체. defaultThemeName 속성을 통해 고정된 테마의 이름을 지정할 수 있다.
org.springframework.web.servlet.ViewResolver=org.springframework.web.servlet.view.InternalResourceViewResolver
InternalResourceView(서블릿이나 JSP에서 사용)를 지원하는 UrlBasedViewResolver의 하위 클래스. UrlBasedViewResolver는 명시적인 매핑이 없어도 뷰의 이름을 URL로 사용한다. 또한 뷰를 찾을 때 리소스 URL에서 그대로 찾거나, 지정한 prefix와 suffix를 추가하여 찾을 수 있다.
ex) prefix = "/WEB-INF/jsp/", suffix = ". jsp", viewname = "test"-> "/WEB-INF/jsp/test.jsp"
org.springframework.web.servlet.RequestToViewNameTranslator=org.springframework.web.servlet.view.DefaultRequestToViewNameTranslator
뷰 이름이 명시적으로 지정되지 않았을 때, 요청 URI를 뷰 이름으로 변환해주는 RequestToViewNameTranslator 구현체. 기본 변환한 파일 확장자와 prefix와 suffix를 제거하는 것이다.
org.springframework.web.servlet.FlashMapManager=org.springframework.web.servlet.support.SessionFlashMapManager
HTTP 세션에서 FlashMap 객체를 저장하고 가져오는 FlashMapManager 구현체
참고