Apache Tomcat / / 2024. 10. 15. 11:21

MVC Config API

MVC Config API는 Spring Framework에서 Spring MVC 설정을 더 세밀하게 제어하고 커스터마이징할 수 있도록 제공하는 인터페이스와 클래스들을 의미해. 이를 통해 기본 MVC 설정을 확장하거나 수정해서 애플리케이션의 요구 사항에 맞춘 MVC 동작을 설정할 수 있어.

 

Spring에서는 대부분의 기본 설정을 자동으로 처리해 주지만, 특정 동작이나 기능을 커스터마이징하고 싶을 때 WebMvcConfigurer 인터페이스나 여러 설정 API를 사용해서 직접 설정할 수 있어.

 

주요 클래스 및 인터페이스

 

1. WebMvcConfigurer 인터페이스

 

WebMvcConfigurerSpring MVC의 설정을 확장할 수 있도록 다양한 메서드를 제공하는 주요 인터페이스야. 이를 구현해서 MVC의 다양한 기능을 커스터마이징할 수 있어. 이 인터페이스를 사용하면, @EnableWebMvc를 사용한 기본 설정에 추가적인 설정을 덧붙일 수 있어.

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
    // 여러 MVC 설정을 커스터마이징할 수 있는 메서드를 구현
}

 

주요 메서드들:

 

1. addViewControllers: 단순히 URL과 뷰를 매핑할 때 사용해. 컨트롤러 없이도 특정 URL에 대해 뷰를 반환하도록 설정할 수 있어.

@Override
public void addViewControllers(ViewControllerRegistry registry) {
    registry.addViewController("/home").setViewName("home");
}

 

2. configureViewResolvers: 뷰 리졸버를 설정해. 컨트롤러가 반환하는 논리적인 뷰 이름을 물리적인 뷰 파일 경로로 변환해 주는 역할을 해.

@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
    registry.jsp("/WEB-INF/views/", ".jsp");
}

 

3. addResourceHandlers: 정적 자원(CSS, JS, 이미지 파일 등)을 처리할 경로를 설정해. 기본적으로 /static/이나 /resources/ 경로에서 정적 리소스를 제공하지만, 이 설정을 통해 경로를 커스터마이징할 수 있어.

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/static/**")
            .addResourceLocations("/public/");
}

 

4. configureMessageConverters: 요청 및 응답의 바디를 변환하는 메시지 컨버터를 설정할 수 있어. 예를 들어 JSON, XML 등의 데이터를 자동으로 직렬화/역직렬화하는 역할을 하지.

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

 

5. addCorsMappings: CORS 설정을 추가해. CORS(Cross-Origin Resource Sharing)는 다른 도메인 간의 리소스 요청을 허용하거나 차단할 때 사용하는 설정이야.

@Override
public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/api/**")
            .allowedOrigins("https://example.com")
            .allowedMethods("GET", "POST");
}

 

6. addInterceptors: 인터셉터를 추가해. 인터셉터는 요청을 처리하기 전에 또는 후에 특정 작업을 수행할 수 있게 해 주는 기능이야. 예를 들어, 로그인 여부를 확인하거나 로그를 기록할 때 사용할 수 있어.

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(new MyInterceptor()).addPathPatterns("/api/**");
}

 

7. configurePathMatch: URL 패턴 매칭 방식을 커스터마이징할 수 있어. 예를 들어, /user//user를 동일한 URL로 취급할지 여부 등을 설정할 수 있지.

@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
    configurer.setUseTrailingSlashMatch(false);
}

 

2. @EnableWebMvc 애노테이션

 

이 애노테이션은 Spring MVC 설정을 활성화하고, WebMvcConfigurer로 설정을 확장할 수 있는 환경을 제공해. 자동 설정 기능을 제공하면서도, WebMvcConfigurer를 통해 필요한 부분을 커스터마이징할 수 있는 API를 사용할 수 있도록 해.

 

3. ViewResolver

 

ViewResolver컨트롤러에서 반환하는 논리적인 뷰 이름을 물리적인 뷰 경로로 변환하는 역할을 해. Spring MVC는 여러 가지 뷰 리졸버를 제공하며, 그 중에서 JSP, Thymeleaf, Freemarker 같은 템플릿 엔진을 지원할 수 있어.

 

4. ResourceHandler

 

ResourceHandler는 웹 애플리케이션에서 정적 자원(CSS, JS, 이미지 등)을 제공하는 경로를 설정하는 데 사용돼. 주로 addResourceHandlers 메서드를 통해 경로를 설정할 수 있어.

 

5. HttpMessageConverter

 

HttpMessageConverter는 요청 또는 응답 바디를 직렬화(Java 객체를 JSON, XML 등으로 변환)하거나 역직렬화(JSON, XML 등을 Java 객체로 변환)하는 데 사용돼. configureMessageConverters 메서드를 통해 직접 설정할 수 있어.

 

Spring MVC Config API의 전체적인 구조

 

1. **WebMvcConfigurer**를 사용해 MVC의 동작을 세밀하게 커스터마이징할 수 있어.

2. **ViewResolver**와 **ResourceHandler**를 통해 뷰 리졸루션과 정적 자원 제공 방식을 설정할 수 있어.

3. **HttpMessageConverter**를 통해 요청과 응답의 데이터를 원하는 형식으로 변환할 수 있어.

4. 다양한 메서드들을 통해 CORS, 인터셉터, URL 매칭 방식 등을 세부적으로 설정 가능해.

 

요약

 

Spring MVC Config API는 Spring MVC 애플리케이션의 기본 설정을 더 세밀하게 제어하고 커스터마이징할 수 있도록 도와주는 인터페이스와 클래스들이야. 주로 WebMvcConfigurer 인터페이스를 사용해 뷰 리졸버, 메시지 컨버터, 정적 자원 경로, CORS 설정 등을 세부적으로 관리할 수 있어. Spring Boot는 기본 설정을 제공하지만, 이 API를 사용해 원하는 대로 설정을 추가하거나 수정할 수 있지.

'Apache Tomcat' 카테고리의 다른 글

Apache Tomcat 전체 흐름  (2) 2024.10.15
SLF4J  (0) 2024.10.15
Enable MVC Configuration  (0) 2024.10.15
@RequestMapping handler method  (0) 2024.10.11
@GetMapping, @PostMapping  (0) 2024.10.08
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유