728x90
반응형
WebMvcConfigurer 인터페이스와 설정
@EnableWebMvc 어노테이션을 사용하면 @Controller 어노테이션을 붙인 컨트롤러를 위한 설정을 생성합니다.
또한, @EnableWebMvc 어노테이션을 사용하면 WebMvcConfigurer 타입의 빈을 사용해서 MVC 설정을 추가로 생성합니다.
package config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
@EnableWebMvc
public class MvcConfig implements WebMvcConfigurer {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/view/", ".jsp");
}
}
위 설정 클래스는 WebMvcConfigurer 인터페이스를 상속하고 있습니다. @Configuration 어노테이션을 붙인 클래스 역시 컨테이너에 빈으로 등록되므로 MvcConfig 클래스는 WebMvcConfigurer 타입의 빈이 됩니다.
@EnableWebMvc 어노테이션을 사용하면 WebMvcConfigurer 타입인 빈 객체의 메서드를 호출해서 MVC 설정을 추가합니다.
예로, ViewResolver 설정을 추가하기 위해 WebMvcConfigurer 타입인 빈 객체의 configureViewResolvers() 메서드를 호출합니다. WebMvcConfigurer 인터페이스를 구현한 설정 클래스는 configureViewResolvers() 메서드를 재정의해서 알맞은 뷰 관련 설정을 추가해 주면 됩니다. (소스는 JSP를 위한 설정)
스프링 5 버전은 자바 8 버전부터 지원하는 디폴트 메서드를 사용해서 Configurer 인터페이스의 메서드에 기본 구현을 제공하고 있습니다.
public interface WebMvcConfigurer{
default void configurePathMatch(PathMatchConfigurer configurer){
}
default void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer){
}
default void addFormatters(FormatterRegistry registry){
}
default void addInterceptors(InterceptorRegistry registry){
}
default void configureViewResolvers(ViewResolverRegistry registry){
}
...
}
728x90
반응형
'Spring' 카테고리의 다른 글
[Spring] 디폴트 핸들러와 HandlerMapping의 우선순위 (0) | 2024.04.08 |
---|---|
[Spring] JSP를 위한 ViewResolver (0) | 2024.04.08 |
[Spring] DispatcherServlet과 스프링 컨테이너 (0) | 2024.04.03 |
[Spring] controller와 handler (0) | 2024.04.01 |
[Spring] 스프링 MVC 핵심 구성 요소 (0) | 2024.04.01 |