1. DispatcherServlet과 스프링 컨테이너


스프링 MVC에서 모든 요청의 흐름을 관리하는건 DispatcherServlet이라고 정리했었습니다.
DispatcherServlet은 전달받은 설정 파일을 이용해서 스프링 컨테이너를 생성합니다.

 

 

2. @EnableWebMvc - 설정이 완료된 여러 스프링 빈을 추가


DispatcherServlet이 스프링 컨테이너를 생성하기 위해선 입력으로 받는 설정 클래스에는 HandlerMapping 빈과 HandlerAdapter 빈이 등록되어있어야 합니다. 하지만 설정 클래스에 @EnableWebMvc 애노테이션을 추가해주면 해당 빈을 자동으로 추가해줍니다.

@Configuration
@EnableWebMvc
public class MvcConfig {
	...
}

 

정확히 @EnableWebMvc 애노테이션은 @Controller 타입의 핸들러 객체를 처리하기 위한 다음의 두 클래스를 포함한다.

  • o.s.w.servlet.mvc.method.annotation.RequestMappingHandlerMapping
  • o.s.w.servlet.mvc.method.annotation.RequestMappingHandlerAdapter

 

3. WebMvcConfigurer 인터페이스 - @EnableWebMvc로 자동 생성된 빈의 설정 값을 추가


@EnableWebMvc 애노테이션을 사용하면 @Controller 애노테이션을 붙인 컨트롤러를 위한 설정을 생성합니다. 추가로 @EnableWebMvc 애노테이션을 사용하면 WebMvcConfigurer 타입의 빈을 이용해 MVC 설정을 추가로 생성합니다.

@Configuration
@EnableWebMvc
public class MvcConfig implements WebMvcConfigurer {

	@Override
    public void configureDefaultServletHandling(
    		DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }
    
    @Override
    public void configureViewResolvers(
    		ViewResolverRegistry registry) {
        registry.jsp("/WEB-INF/view/", ".jsp");
    }
}

참고자료


[1] 초보 웹 개발자를 위한 스프링 5 프로그래밍 입문_최범균 저