본문 바로가기
웹 프로그래밍/스프링

스프링 MVC 빈 설정

by Backchus 2019. 4. 30.

@Configuration을 사용한 자바 설정파일에 직접 @Bean으로 등록 할 수있지만 SpringBoot이전에 스프링 환경에서도 직접 빈설정을 하는 방법보다는 @EnableWebMvc를 이용한 방법이 사용된다.

먼저 @EnableWebMvc를 사용하지 않고 직접 @Bean을 이용하여 ViewResolver의 Prefix와 Suffix를 설정해 빈으로 등록하는 방법을 보여준다.

디버거를 이용해서 DispatcherServlet에 등록된 빈을 살펴보면

기본적으로 2개의 handlerMapping과 3개의 handlerAdaptor가 등록이 되어있다. 그중에 애노테이션 관련된 RequestHandlerMapping를 살펴보면 

interceptor가 하나도등록이 되어있지 않다.

hadlerAdaptor에는 messageConverter가 4개가 등록되있는것을 볼 수 있다.

 

이번에는 @EnableWebMvc를 이용하여 등록된 빈을 살펴보자

디버거를 이용하여 hadlerMapping을 살펴보면

@EnableWebMvc가 없었을때는 BeanNameUrlHandlerMapping이 첫번째로 되어있었지만 지금은 순서가 반대로 되어있다.

또한 interceptor가 2개가 등록이 되어있고 우선순위 순서가 0으로 제일 먼저 오게 되어있다.

 

hadlerAdapter의 순서도 어노테이션을 이용할때 처리가능한 RequestMappingHandlerAdapter가 첫번째로 등록된 것을 알 수있다. 이렇게 @EnableWebMvc를 이용하면 어노테이션기반의 Spring MVC를 좀더 성능을 최적화 시킬수 있다는 장점이있고, delegation구조로 되어 있기 때문에 WebMvcConfigurer를 상속받아서 직접 빈으로 등록해서 설정하는것보다 간편히 설정을 할 수 있다.