Spring/Spring 웹 MVC
[스프링 웹 MVC] @EnableWebMvc
메성
2020. 4. 6. 23:46
반응형
@EnableWebMvc
애노테이션 기반 스프링 MVC를 사용할 때 편리한 웹 MVC 기본 설정
@Configuration
@ComponentScan
@EnableWebMvc
public class WebConfig {
}
DispatcherServlet의 기본적인 전략과 @EnableWebMvc 사용 시 handlerMapping, handlerAdapter, viewResolver를 확인
DispatcherServlet 기본적인 전략
- handlerMappings
- BeanNameUrlHandlerMapping(url 기반으로 매핑 처리)
- order = 매우 낮은 우선 순위
- RequestMappingHandlerMapping
- interceptors : size = 0;
- order = 매우 낮은 우선 순위
- BeanNameUrlHandlerMapping(url 기반으로 매핑 처리)
- handlerAdapters
- HttpRequestHandlerAdapter
- SimpleControllerHandlerAdapter
- RequestMappingHandlerAdapter
- messageConvertes : size = 4;
- order = 매우 낮은 우선 순위
- 우선 순위가 모두 동일, 등록되어 있는 순으로 우선순위 다른 듯
@EnableWebMvc
@Configuration
@ComponentScan
@EnableWebMvc
public class WebConfig {
}
//WebApplication
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
//@EnableWebMvc를 사용하기 위해선 DispatcherServlet이 사용하는 애플리케이션 컨텍스트의 서블릿 컨텍스트가 설정 되어야 함.
context.setServletContext(servletContext);
DispatcherServlet dispatcherServlet = new DispatcherServlet(context);
ServletRegistration.Dynamic app = servletContext.addServlet("app", dispatcherServlet);
app.addMapping("/app/*");
}
- handlerMappings
- RequestMappingHandlerMapping(1순위)
- order = 1
- interceptors : size = 2;
- BeanNameUrlHandlerMapping
- order = 2
- RequestMappingHandlerMapping(1순위)
- handlerAdapters
- RequestMappingHandlerAdapter(1순위)
- messageConvertes : size = 6;
- HttpRequestHandlerAdapter
- SimpleControllerHandlerAdapter
- RequestMappingHandlerAdapter(1순위)
- @EnabelWebMvc를 사용할 시 RequestMappingHandlerMapping과 RequestMappingHandlerAdapter가 1순위로 바라보기 때문엔 애노테이션 기반의 HandlerMapping을 할 시 성능적으로 우수할 것이다.
반응형