[Spring Boot] WebMvcConfigurer로 설정 자동화 추가하기
Spring BootSpring에서 기본으로 제공하는 자동 설정 외에 추가적으로 설정을 자동화할 때 사용한다.
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~: 기존 설정을 이용하여 추가로 설정을 확장