Spring MVC 기본 동작을 갈아엎지 않고 필요한 부분만 커스터마이징하는 인터페이스이다
✅ 1. 어디에 쓰는가?
Spring Boot 는 기본적으로 내부에서 MVC 설정을 자동으로 해준다
WebMvcConfigurer 인터페이스를 구현하면 DispatcherServlet 과 관련된 MVC 설정(인터셉터, CORS, 리소스 핸들링, 뷰 설정 등) 을 Java 기반으로 커스텀할 수 있다
여기서 기본 설정은 그대로 두고 필요한 부분만 커스터마이징하기 때문에 전체 설정을 다시 만드는것보다 간편하다
@Configuration
public class WebConfig implements WebMvcConfigurer {
}
이렇게 설정하게 되면 Spring MVC 설정에 끼어들 수 있다
1️⃣ 정적 리소스 매핑
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/wvoice/**")
.addResourceLocations("file:/data/tts/");
}
/wvoice/ 이후의 경로를 resourceLocation 경로 뒤에 매핑시켜 실제 파일 경로로 접근하여 처리할 수 있다
2️⃣ 인터셉터 등록
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/login");
}
필터 이후에 접근한 요청에 대해 URL 로 구분하여 처리할 수 있다
3️⃣ CORS 설정
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("*");
}
요청 도메인과 접근한 도메인이 다를때 처리한다
4️⃣ ViewResolver 설정
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/views/", ".jsp");
}
JSP 같은 뷰 설정을 한다
5️⃣ 메시지 컨버터 (JSON 등)
@Override
public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
}
Object -> Json 변환 커스터마이징
6️⃣ 포맷터 / 컨버터
@Override
public void addFormatters(FormatterRegistry registry) {
}
날짜, enum 변환 등