Spring

[Spring] 스프링 MVC(3) - 스프링 MVC 설정

재담 2022. 3. 12. 21:36

스프링 MVC 설정

스프링 MVC를 설정하려면 최소한 다음의 구성 요소를 빈 객체로 등록해주어야 한다.

  • HandlerMapping 구현 객체
  • HandlerAdapter 구현 객체
  • ViewResolver 구현 객체

 

이 중에서 HandlerMappingHandlerAdapter는 다음과 같이 <mvc:annotation-driven> 태그를 이용하면 설정이 끝난다. 따라서, ViewResolver만 추가로 설정해주면 된다.

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <mvc:annotation-driven/>

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/view/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <bean class="net.madvirus.spring4.chap07.quickstart.HelloController"/>
</beans>

<mvc:annotation-driven> 태그는 다음의 두 클래스를 빈으로 등록해준다.

  • RequestMappingHandlerMapping
  • RequestMappingHandlerAdapter

 

이 두 클래스는 @Controller 어노테이션이 적용된 클래스를 컨트롤러로 사용할 수 있게 해준다. 이 두 객체 외에 <mvc:annotation-driven> 태그는 JSON이나 XML 등 요청 / 응답 처리를 위해 필요한 변환 모듈이나 데이터 바인딩 처리를 위한 ConversionService 등을 빈으로 등록해준다.

 

위 설정에서 InternalResourceViewResolverJSP를 이용해서 뷰를 생성할 때 사용되는데, ViewResolver를 지정할 때 주의할 점은 ViewResolver의 이름이 "viewResolver"여야 한다는 점이다. prefix와 suffix는 컨트롤러의 처리 결과를 보여줄 JSP의 경로를 생성할 때 사용된다.

 

@Configuration 설정을 사용한다면, @EnableWebMvc 어노테이션을 사용하면 된다. @EnableWebMvc 어노테이션을 사용하면 <mvc:annotation-driven> 태그와 동일하게 스프링 MVC를 설정하는데 필요한 빈을 자동으로 등록해준다. 다음과 같이 @EnableWebMvc 어노테이션을 설정 클래스에 적용하면 된다.

@Configuration
@EnableWebMvc
public class MvcQuickStartConfig {

    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/view/");
        viewResolver.setSuffix(".jsp");
        return viewResolver;
    }

    // 이하 생략
    ...
}

Reference

  • 웹 개발자를 위한 Spring 4.0 프로그래밍 (최범균 저)