MVC Config API는 Spring Framework에서 Spring MVC 설정을 더 세밀하게 제어하고 커스터마이징할 수 있도록 제공하는 인터페이스와 클래스들을 의미해. 이를 통해 기본 MVC 설정을 확장하거나 수정해서 애플리케이션의 요구 사항에 맞춘 MVC 동작을 설정할 수 있어.
Spring에서는 대부분의 기본 설정을 자동으로 처리해 주지만, 특정 동작이나 기능을 커스터마이징하고 싶을 때 WebMvcConfigurer 인터페이스나 여러 설정 API를 사용해서 직접 설정할 수 있어.
주요 클래스 및 인터페이스
1. WebMvcConfigurer 인터페이스
WebMvcConfigurer는 Spring 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 |