[Spring Boot] WebMvcConfigurer로 설정 자동화 추가하기

Spring Boot

Language :

Spring에서 기본으로 제공하는 자동 설정 외에 추가적으로 설정을 자동화할 때 사용한다.

Spring에서 제공하는  Bean 설정자(~Configurer로 끝나는 Interface)를 Class로 구현하고 @Configuration을 통해 Bean으로 등록한다.

WebConfig 구현

@EnableWebMvc의 Bean 설정자인 Interface WebMvcConfigurer를 구현한 Class를 만들고 @Configuration을 통해 Bean으로 등록한다.

@Configuration
class WebMvcConfig: WebMvcConfigurer {
    override fun addFormatters(registry: FormatterRegistry) {
        registry.addConverter(UserRequestConverter())
    }
}

@WebMvcConfigurer

메서드 접근제한자가 default로 선언되어 있어서 필요한 메서드만 재정의해서 사용할 수 있다.

public interface WebMvcConfigurer {
	default void configurePathMatch(PathMatchConfigurer configurer) { }
	default void configureContentNegotiation(ContentNegotiationConfigurer configurer) { }
	default void configureAsyncSupport(AsyncSupportConfigurer configurer) { }
	default void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { }
	default void addFormatters(FormatterRegistry registry) {	}
	default void addInterceptors(InterceptorRegistry registry) { }
	default void addResourceHandlers(ResourceHandlerRegistry registry) { }
	default void addCorsMappings(CorsRegistry registry) { }
	default void addViewControllers(ViewControllerRegistry registry) { }
	default void configureViewResolvers(ViewResolverRegistry registry) { }
	default void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) { }
	default void addReturnValueHandlers(List<HandlerMethodReturnValueHandler> handlers) { }
	default void configureMessageConverters(List<HttpMessageConverter<?>> converters) { }
	default void extendMessageConverters(List<HttpMessageConverter<?>> converters) { }
	default void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) { }
	default void extendHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) { }

	@Nullable
	default Validator getValidator() {
		return null;
	}

	@Nullable
	default MessageCodesResolver getMessageCodesResolver() {
		return null;
	}
}
  • add~: 새로운 빈 추가
  • configure~: 수정자를 통해 기존 설정을 대신하여 등록
  • extend~: 기존 설정을 이용하여 추가로 설정을 확장

민갤

Back-End Developer

백엔드 개발자입니다.