본문 바로가기
개발/SpringBoot

SpringBoot WebConfig @EnableWebMvc, WebMvcConfigurer

by 궁즉변 변즉통 통즉구 2022. 1. 19.
반응형

SpringBoot에서 WebConfig 설정 시 @EnableWebMvc, WebMvcConfigurer를 설정하는것을 자주 보는데 지금까지 확인한 내용만 정리해본다

 

먼저 @EnableWebMvc를 사용하거나 WebMvcConfigurer를 구현하지 않으면 아래와 같이 WebConfig 설정 시 Bean을 직접 등록해줘야하는 등으로 권장하지 않는 방법이라고 한다

@Configuration
public class WebConfig {
	@Bean 
	public InternalResourceViewResolver viewResolver() {
   		InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
   		viewResolver.setPrefix("/WEB-INF/jsp/");
   		viewResolver.setSuffix(".jsp");
   		return viewResolver;
	}
}

 

@EnableWebMvc를 사용하면 어노테이션 기반으로 MVC 설정 Bean들이 등록이 된다고 한다. 하지만 내부적으로 DelegatingWebMvcConfiguration를 import하고 있는데 이 클래스는 WebMvcConfigurationSupport 상속받고 있다. 이 WebMvcConfigurationSupport 타입의 빈이 등록이 되어 있으면 SpringBoot의 자동 설정 WebMvcAutoConfiguration 빈을 등록하지 않는다. 따라서 applicaation.yml의 mvc 설정이 안먹거나 기타 기본 동작이 되지 않는다.

 

반면, WebMvcConfigurer는 SpringBoot의 자동 설정(WebMvcAutoConfiguration)을 유지하면서 기능을 쉽게 확장할 수 있게 해준다

예를들어 위의 viewResolver같은 경우 아래와 같이 설정 가능하다.

@Configuration
public class WebConfig implements WebMvcConfigurer {
	@Override
	public void configureViewResolvers(ViewResolverRegistry registry) {
		registry.jsp("/WEB-INF/jsp/",".jsp");
	}
}

 

많이 파악은 못한 상태이지만 지금까지 기준으로는 @EnableWebMvc는 사용하지 않고 WebMvcConfigurer만 사용해서 WebConfig를 구성할 계획이다.

  

 

반응형

댓글