2025. 2. 27. 23:20ㆍSpring Framework/Web on Servlet Stack
Spring MVC 애플리케이션에서는 DispatcherServlet이 요청을 처리할 때 필요한 인프라 빈(Infrastructure Beans)을 선언해야 합니다.
이러한 빈들은 특수 빈(Special Bean Types)에서 설명한 HandlerMapping
, ViewResolver
등과 같은 컴포넌트입니다.
1. DispatcherServlet의 빈 검색 과정
DispatcherServlet
은 요청을 처리할 때 WebApplicationContext에서 특수 빈을 검색합니다.
빈을 찾는 과정은 다음과 같습니다.
1️⃣ WebApplicationContext에서 특수 빈 검색
HandlerMapping
,HandlerAdapter
,ViewResolver
등 필요한 빈이 존재하는지 확인
2️⃣ 빈이 없으면 디폴트 설정 사용
- DispatcherServlet.properties 파일에 정의된 디폴트 타입(Default Types)을 사용
- 즉, 사용자가 빈을 명시적으로 등록하지 않아도 Spring이 디폴트 구현을 제공
📌 즉, Spring MVC는 디폴트로 자동 설정을 제공하지만, 필요하면 사용자가 직접 빈을 선언하여 동작을 조정할 수 있습니다.
2. Web MVC 설정(MVC Config)의 역할
Spring MVC에서 Web MVC 설정을 적용하는 것이 가장 효율적인 방법입니다.
Web MVC 설정을 적용하면 다음과 같은 기능을 제공합니다.
✅ 필수적인 특수 빈 자동 등록
- Spring MVC가 요청을 처리하는 데 필요한 필수 빈을 자동으로 선언
✅ Java 또는 XML을 사용한 설정 가능
- Java 기반 설정 (
@Configuration
) - XML 기반 설정 (
mvc:annotation-driven
)
✅ 고급 설정을 위한 API 제공
- MVC 설정을 위한 고수준(High-level) API를 제공하여 사용자 정의 가능
3. Spring Boot의 MVC 설정 방식
Spring Boot는 MVC Java 설정을 사용하여 Spring MVC를 자동으로 설정합니다.
또한, 추가적인 편리한 옵션(Extra Convenient Options)을 제공합니다.
📌 즉, Spring Boot를 사용하면 기본적인 Spring MVC 설정을 별도로 하지 않아도 자동으로 설정되며, 추가적으로 쉽게 커스터마이징할 수 있습니다.
4. Java 구성 예제 (Spring Boot 기반)
Spring Boot에서 @EnableWebMvc
를 사용하여 MVC 설정을 사용자 정의할 수 있습니다.
@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/home").setViewName("home");
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/static/**")
.addResourceLocations("classpath:/static/");
}
}
📌 설명
@EnableWebMvc
: Spring MVC 설정을 활성화addViewControllers()
: 특정 URL 요청을 특정 뷰로 연결addResourceHandlers()
: 정적 리소스(css, js, 이미지 등) 경로 매핑
5. XML 구성 예제
Spring Boot를 사용하지 않고 XML로 Spring MVC 설정을 적용할 수도 있습니다.
<mvc:annotation-driven/>
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
📌 설명
<mvc:annotation-driven/>
: Spring MVC의 주요 기능을 활성화InternalResourceViewResolver
: JSP 뷰를 위한 뷰 리졸버(ViewResolver) 설정
🚀 Summary
DispatcherServlet
은 요청을 처리하기 위해 특수 빈을 WebApplicationContext에서 찾고, 없으면 디폴트 설정을 사용합니다.- Web MVC 설정을 적용하면 필수적인 빈을 자동으로 등록하고 커스터마이징할 수 있는 API를 제공합니다.
- Spring Boot는 MVC Java 설정을 사용하여 자동 설정을 수행하며, 추가적으로 편리한 옵션을 제공합니다.
- Spring Boot에서는
@EnableWebMvc
와WebMvcConfigurer
를 활용하여 설정할 수 있으며, XML 설정도 가능합니다.
➡ 결론적으로, Spring Boot에서는 MVC 설정이 자동으로 적용되지만, 필요하면 추가적인 설정이 가능하다는 점이 중요합니다!
출처 : https://docs.spring.io/spring-framework/reference/web/webmvc/mvc-servlet/config.html
'Spring Framework > Web on Servlet Stack' 카테고리의 다른 글
Processing (0) | 2025.02.27 |
---|---|
Servlet Config (0) | 2025.02.27 |
Special Bean Types (0) | 2025.02.27 |
Context Hierarchy (0) | 2025.02.27 |
Dispatcher Servlet (0) | 2025.02.27 |