티스토리 뷰

정리 노트/Spring

WebMvcConfigurer

eyoadgkn 2024. 5. 1. 22:57
WebMvcConfigurer
Spring MVC 애플리케이션의 구성을 커스터마이징하기 위해 사용되는 인터페이스입니다.
이 인터페이스를 구현하여 다양한 Spring MVC 설정을 오버라이드할 수 있습니다.

사용 이유

URL 매핑 설정: 애플리케이션의 URL 매핑을 커스터마이징할 수 있습니다.
뷰 리졸버 설정: 뷰 리졸버의 설정을 변경할 수 있습니다.
리소스 핸들러 설정: 정적 리소스(CSS, JavaScript, 이미지 등)의 처리 방식을 변경할 수 있습니다.
인터셉터 등록: 요청 전/후에 실행될 인터셉터를 등록할 수 있습니다.
포맷터 및 컨버터 등록: 데이터 포맷팅 및 변환을 위한 포맷터와 컨버터를 등록할 수 있습니다.
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.view.InternalResourceViewResolver;

@Configuration
public class MyWebMvcConfigurer implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 정적 리소스 처리 설정
        registry.addResourceHandler("/static/**")
                .addResourceLocations("classpath:/static/");
    }

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        // 뷰 리졸버 설정
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        registry.viewResolver(resolver);
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 인터셉터 등록
        LocaleChangeInterceptor interceptor = new LocaleChangeInterceptor();
        interceptor.setParamName("lang");
        registry.addInterceptor(interceptor);
    }
}

 

/static/** 경로의 정적 리소스를 classpath:/static/ 디렉토리에서 찾도록 설정합니다.
JSP 뷰 리졸버를 설정하여 /WEB-INF/views/ 경로에서 JSP 파일을 찾도록 합니다.
LocaleChangeInterceptor를 등록하여 lang 파라미터로 언어 변경을 처리할 수 있도록 합니다.

'정리 노트 > Spring' 카테고리의 다른 글

board_update  (0) 2024.06.03
자주 사용하는 Lombok의 어노테이션 정리  (0) 2024.05.23
@Bean  (0) 2024.04.29
@ResponseBody  (0) 2024.04.26
Spring Project[Project]  (0) 2024.02.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함