Enable MVC Configuration
2024. 10. 14. 20:28ㆍSpring Framework/Web on Servlet Stack
Spring MVC에서 @EnableWebMvc
애노테이션은 자바 기반 설정에서 MVC 구성을 활성화하기 위해 사용됩니다. 이를 통해 뷰 해석, 핸들러 매핑, 인자 해결자, 기타 웹 관련 설정을 수동으로 설정하지 않고도 기본적으로 제공되는 필수 구성을 활성화할 수 있습니다. 이 애노테이션은 Spring의 애노테이션 기반 접근 방식의 일부로, 웹 설정을 단순화하여 사전 정의된 MVC 설정을 활성화합니다.
@EnableWebMvc
에 대한 설명
- 기능:
@EnableWebMvc
가 적용되면 Spring MVC의 구성을 가져와서 웹 애플리케이션 개발에 필요한 기본 빈들을 등록합니다. 여기에는 다음과 같은 요소들이 포함됩니다:- View resolvers (예: JSP를 위한 InternalResourceViewResolver)
- Message converters (예: JSON 또는 XML 변환)
- Exception handlers
- Interceptors
- Data binding 및 validation mechanisms 메커니즘
- Handler mappings (mapping URLs to controllers)
- Default Configuration:
실제로@EnableWebMvc
는DelegatingWebMvcConfiguration
클래스를 등록하여 여러 기본 설정을 제공합니다. 여기에는 다음과 같은 빈들이 포함됩니다:RequestMappingHandlerMapping
: 요청을 핸들러 메서드에 매핑.RequestMappingHandlerAdapter
: 요청을 처리할 컨트롤러 메서드에 적응.HandlerExceptionResolver
: 요청 처리 중 발생한 예외를 해결.DefaultViewResolver
: 논리적 뷰 이름을 실제 뷰 템플릿으로 해석.
Java Configuration 예시
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
// 필요한 경우 기본 설정을 재정의
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**")
.addResourceLocations("/public", "classpath:/static/");
}
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp("/WEB-INF/views/", ".jsp");
}
// 인터셉터, 메시지 변환기 등 기타 설정을 사용자 정의 가능
}
이 설정에서:
@EnableWebMvc
애노테이션은 Spring MVC를 활성화하고 기본 구성을 등록합니다.WebMvcConfigurer
인터페이스를 구현하여 리소스 핸들러를 추가하거나 뷰 해석기를 설정하는 등 기본 설정을 사용자 정의할 수 있습니다.
Reactive 스택(Spring WebFlux)에서의 동등 기능
Spring의 Reactive 스택(WebFlux)에서는 유사한 방식으로 웹 구성을 활성화할 수 있지만, 이는 비동기식, 논블로킹(non-blocking) 방식의 요청 처리를 위한 반응형 프로그래밍에 맞춰져 있습니다. Reactive 스택에서 @EnableWebMvc
와 동등한 애노테이션은 @EnableWebFlux
입니다.
@Configuration
@EnableWebFlux
public class WebFluxConfig implements WebFluxConfigurer {
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.freeMarker().prefix("/WEB-INF/views/").suffix(".ftl");
}
@Override
public void configureHttpMessageCodecs(ServerCodecConfigurer configurer) {
configurer.defaultCodecs().enableLoggingRequestDetails(true);
}
// WebFlux에 특화된 설정 추가 가능
}
Spring MVC와 Spring WebFlux의 주요 차이점:
- Programming Model : Spring MVC는 Blocking(요청 당 하나의 스레드) 모델을 사용하지만, WebFlux는 Non-Blocking, 이벤트 기반 모델을 사용하여 반응형 프로그래밍에 적합합니다.
- Enable Annotation : Spring MVC에서는
@EnableWebMvc
를 사용하고, WebFlux에서는@EnableWebFlux
를 사용하여 구성을 활성화합니다. - View Handling : Spring MVC는 전통적인 JSP와 같은 뷰 기술과 함께 사용할 수 있지만, Spring WebFlux는 일반적으로 논블로킹 렌더링을 위해 Thymeleaf, FreeMarker, Mustache와 같은 Reactive 뷰 템플릿을 사용합니다.
전반적인 구조는 유사하지만, Reactive 스택은 더 적은 자원으로 높은 동시성을 처리할 수 있도록 설계되어, 높은 부하가 걸릴 때 확장성이 요구되는 애플리케이션에 적합합니다.
'Spring Framework > Web on Servlet Stack' 카테고리의 다른 글
Type Conversion (0) | 2024.10.14 |
---|---|
MVC Config API (0) | 2024.10.14 |
MVC Config (0) | 2024.10.14 |
Functional Endpoints (0) | 2024.10.13 |
Functional Endpoints[Serving Resources,Running a Server,Filtering Handler Functions] (0) | 2024.10.13 |