지금까지는 스프링 부트없이 스프링이 제공해주는 스프링 MVC(DispatcherServlet)를 설정하는 방법에 대해 알아봤다. 지금부터는 스프링 부트가 제공해주는 스프링 MVC를 설정하는 방법에 대해 알아보자.
스프링 부트는 스프링이 제공하는 기본 전략 객체(빈) 말고도 추가적으로 기본 전략 객체를 등록해준다.
HandlerMapping
HandlerAdapter
ViewResolver
External Libraries -> maven : org.springframework.boot:spring-boot-autoconfigure:2.5.1 -> spring-boot-autoconfigure-2.5.1.jar -> META-INF -> spring.factories
DispatcherServletAutoConfiguration.class
WebMvcAutoConfiguration.class
스프링 부트를 사용하는 스프링 MVC
자바 애플리케이션에 내장 톰캣을 만들고 그 안에 DispatcherServlet을 등록한다.
스프링 부트의 “주관”이 적용된 자동 설정이 동작한다.
스프링 MVC 커스터마이징
@Configuration(proxyBeanMethods = false)
@ConditionalOnWebApplication(type = Type.SERVLET)
@ConditionalOnClass({ Servlet.class, DispatcherServlet.class, WebMvcConfigurer.class })
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
@AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE + 10)
@AutoConfigureAfter({ DispatcherServletAutoConfiguration.class, TaskExecutionAutoConfiguration.class,
ValidationAutoConfiguration.class })
public class WebMvcAutoConfiguration {
@ConditionalOnMissingBean(WebMvcConfigurationSupport.class)
조건에 의해 @EnableWebMvc가 있으면 스프링부트의 스프링 MVC를 자동설정 하지 않는다.
참고