티스토리 뷰

카테고리 없음

Web MVC (진행중)

notEmpty 2025. 1. 10. 21:06

Web MVC

WebMvcConfigurer 자체는 인터페이스이기 때문에 기본 구현이 없습니다. 즉, 개발자가 필요한 메서드를 오버라이드하여 원하는 기능을 추가하거나 수정해야 합니다.

다만, Spring Boot는 기본적으로 WebMvcConfigurer를 사용하지 않아도 대부분의 Web MVC 관련 설정을 자동으로 구성해줍니다. 이러한 Spring Boot의 기본 설정 덕분에 WebMvcConfigurer는 필요한 경우에만 사용하면 됩니다.


Spring Boot의 디폴트 기능 (자동 설정)

Spring Boot는 다음과 같은 Web MVC 관련 기능을 기본적으로 제공합니다:

  1. 정적 리소스 처리
    • classpath:/static/, classpath:/public/, classpath:/resources/, /META-INF/resources/ 디렉토리에서 정적 파일(이미지, CSS, JS)을 자동으로 제공.
    • URL 패턴 /static/** 등으로 매핑됨.
  2. Thymeleaf와 같은 템플릿 엔진 기본 설정
    • 템플릿 파일을 src/main/resources/templates 디렉토리에서 자동으로 찾음.
  3. Content Negotiation (컨텐츠 협상)
    • 요청 헤더에 따라 JSON, XML, HTML 등의 응답 형식을 자동으로 선택.
  4. 기본 예외 처리
    • Spring Boot는 기본적인 에러 페이지를 제공하고, @ControllerAdvice로 확장 가능.
  5. CORS 기본 설정
    • 필요 시 application.properties에서 기본적인 CORS 설정 가능:
      properties
      코드 복사
      spring.web.cors.allowed-origins=https://example.com
  6. HTTP 메시지 컨버터
    • JSON (Jackson) 및 XML (JAXB) 처리를 위한 기본 컨버터를 자동으로 등록.
  7. Locale 설정
    • 국제화(i18n) 및 지역화(Locale) 설정 지원.

WebMvcConfigurer로 수정 가능한 디폴트 기능

Spring Boot의 자동 설정을 수정하거나 확장하고 싶을 때 WebMvcConfigurer를 사용할 수 있습니다. 예를 들어:

  1. 정적 리소스 추가 Spring Boot가 제공하는 기본 정적 리소스 외에 추가 경로를 등록할 수 있습니다.
  2. java
    코드 복사
    @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/images/**").addResourceLocations("file:/external/images/"); }
  3. CORS 추가 설정 Spring Boot의 기본 설정 외에 더 복잡한 CORS 규칙을 추가할 수 있습니다.
  4. java
    코드 복사
    @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/api/**").allowedOrigins("https://mydomain.com"); }
  5. 인터셉터 등록 추가적인 요청/응답 처리를 위해 인터셉터를 추가.
  6. java
    코드 복사
    @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new MyCustomInterceptor()).addPathPatterns("/**"); }

디폴트 기능을 커스터마이징하는 방법

@EnableWebMvc 어노테이션을 사용하면 Spring Boot의 자동 설정을 끄고 완전히 수동으로 Web MVC 설정을 작성할 수 있습니다. 하지만 보통은 자동 설정을 유지하면서 WebMvcConfigurer로 필요한 부분만 수정하는 것이 좋습니다.


요약

  • WebMvcConfigurer 자체에는 기본 구현이 없지만, Spring Boot는 Web MVC의 디폴트 설정을 제공.
  • Spring Boot의 기본 동작을 수정하거나 확장하고 싶을 때 WebMvcConfigurer를 사용.
  • 필요한 기능만 선택적으로 오버라이드하여 유연하게 사용할 수 있음.
 
 

WebMvcConfigurer 오버라이딩

Spring MVC의 설정을 사용자 정의할 수 있도록 제공되는 인터페이스

현하면 애플리케이션의 Web MVC 동작(예: 인터셉터, 리소스 핸들링, 뷰 컨트롤러 등록 등)을 커스터마이징 가능 

Spring Boot의 자동 설정을 유지하면서도 필요한 부분만 수정할 수 있는 유연한 방법을 제공