본문 바로가기
Spring Framework

Enable MVC Configuration

by xogns93 2024. 10. 16.

Enable MVC Configuration는 Spring 프레임워크에서 Spring MVC의 기본 설정을 커스터마이징하거나 완전히 제어하고자 할 때 사용하는 방법입니다. 일반적으로는 @EnableWebMvc 애너테이션을 통해 활성화합니다.

1. @EnableWebMvc 애너테이션

  • @EnableWebMvc는 Spring에서 MVC 구성을 활성화하고 Spring MVC 기본 설정을 가져오는 데 사용됩니다.
  • 이 애너테이션은 Spring MVC 애플리케이션에서 커스텀 설정을 할 수 있도록 해주며, Spring의 기본 MVC 설정을 오버라이드할 수 있는 기회를 제공합니다.

사용법

@EnableWebMvcSpring Web MVC 구성 요소를 활성화하며, WebMvcConfigurer를 구현하여 MVC 관련 설정을 확장하거나 변경할 수 있습니다.

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
    // 커스텀 MVC 설정을 여기에 추가
}
  • @Configuration: 이 클래스가 Spring 설정 클래스임을 나타냅니다.
  • @EnableWebMvc: Spring MVC 설정을 활성화하며, Spring이 기본적으로 제공하는 MVC 구성을 오버라이드할 수 있습니다.
  • WebMvcConfigurer 인터페이스를 통해 MVC 동작을 세부적으로 조정할 수 있습니다.

2. MVC 설정 커스터마이징

WebMvcConfigurer 인터페이스를 구현하여 Spring MVC의 동작을 원하는 대로 설정할 수 있습니다. 예를 들어, 뷰 리졸버 설정, 정적 자원 처리, CORS 설정 등을 추가하거나 변경할 수 있습니다.

주요 메서드

  1. addViewControllers:
    특정 URL 경로와 뷰를 바로 매핑할 수 있습니다. 주로 간단한 경로에 대해 컨트롤러 클래스를 만들지 않고 빠르게 뷰를 연결할 때 사용합니다.

    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/home").setViewName("home");
    }
  2. addResourceHandlers:
    정적 자원의 경로를 설정할 수 있습니다. 예를 들어, CSS, JS, 이미지 파일들을 정적 리소스로 제공할 때 사용합니다.

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**")
                .addResourceLocations("classpath:/static/");
    }
  3. configureViewResolvers:
    뷰 리졸버를 설정하는 데 사용됩니다. JSP, Thymeleaf 같은 뷰 템플릿 엔진의 경로나 접미사를 설정할 수 있습니다.

    @Override
    public void configureViewResolvers(ViewResolverRegistry registry) {
        registry.jsp("/WEB-INF/views/", ".jsp");
    }
  4. addInterceptors:
    인터셉터를 추가하여 요청을 가로채고 추가적인 처리(로그인 확인, 로깅 등)를 할 수 있습니다.

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LocaleChangeInterceptor());
    }
  5. configureMessageConverters:
    메시지 컨버터를 설정하여 요청과 응답을 JSON, XML 등의 형식으로 변환할 수 있습니다.

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        converters.add(new MappingJackson2HttpMessageConverter());
    }

3. Spring Boot에서는?

Spring Boot에서는 @EnableWebMvc일반적으로 사용하지 않음. Spring Boot는 기본적으로 Spring MVC 구성을 자동으로 설정해주기 때문입니다. Spring Boot의 경우, WebMvcConfigurer를 사용해 필요한 설정만 추가하면 됩니다.

@Configuration
public class WebConfig implements WebMvcConfigurer {
    // Spring Boot에서 MVC 설정을 커스터마이징하는 방법
}

Spring Boot는 자동 구성 덕분에 개발자가 직접 @EnableWebMvc를 추가하지 않아도 대부분의 Spring MVC 설정이 자동으로 적용됩니다. 하지만, Spring Boot에서 Spring MVC의 기본 설정을 완전히 커스터마이징하고 싶다면 @EnableWebMvc를 사용할 수 있습니다.


요약

  • @EnableWebMvc는 Spring MVC 구성을 직접 제어하거나 커스터마이징할 때 사용합니다.
  • Spring MVC에서 다양한 설정을 추가하거나 변경하려면 WebMvcConfigurer 인터페이스를 구현합니다.
  • Spring Boot에서는 자동 구성이 기본이지만, 필요에 따라 WebMvcConfigurer로 설정을 커스터마이징하거나, @EnableWebMvc로 수동 설정을 적용할 수 있습니다.