Web MVC Config

2025. 2. 27. 23:20Spring 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에서는 @EnableWebMvcWebMvcConfigurer를 활용하여 설정할 수 있으며, 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