1. 개요

모든 MVC 프레임 워크는 뷰로 작업하는 방법을 제공합니다.

Spring은 뷰 리졸버를 통해이를 수행하므로 구현을 특정 뷰 기술에 묶지 않고도 브라우저에서 모델을 렌더링 할 수 있습니다.

의 ViewResolver Map는 실제 뷰에 이름을 볼 수 있습니다.

그리고 Spring 프레임 워크에는 InternalResourceViewResolver , XmlViewResolver , ResourceBundleViewResolver 및 기타 몇 가지 뷰 리졸버가 포함되어 있습니다.

이것은 가장 일반적인 뷰 리졸버를 설정하는 방법동일한 구성에서 여러 ViewResolver 를 사용하는 방법을 보여주는 간단한 예제 입니다.

2. 스프링 웹 구성

웹 구성부터 시작하겠습니다. @EnableWebMvc , @Configuration@ComponentScan으로 어노테이션을 달 것입니다 .

@EnableWebMvc
@Configuration
@ComponentScan("com.baeldung.web")
public class WebConfig implements WebMvcConfigurer {
    // All web configuration will go here
}

여기에서 구성에서 뷰 리졸버를 설정합니다.

3. InternalResourceViewResolver 추가

ViewResolver를 사용하면 뷰 이름에 접두사 또는 접미사와 같은 속성을 설정하여 최종 뷰 페이지 URL을 생성 할 수 있습니다.

@Bean
public ViewResolver internalResourceViewResolver() {
    InternalResourceViewResolver bean = new InternalResourceViewResolver();
    bean.setViewClass(JstlView.class);
    bean.setPrefix("/WEB-INF/view/");
    bean.setSuffix(".jsp");
    return bean;
}

들어 같은 단순 예, 우리는 요청을 처리하는 컨트롤러가 필요하지 않습니다.

구성에 정의 된대로 / WEB-INF / view 폴더에 있는 간단한 jsp 페이지 만 있으면됩니다 .

<html>
    <head></head>
    <body>
        <h1>This is the body of the sample view</h1>
    </body>
</html>

4. ResourceBundleViewResolver 추가

이 리졸버의 이름에서 알 수 있듯이 ResourceBundleViewResolverResourceBundle 에서 빈 정의를 사용합니다 .

먼저 ResourceBundleViewResolver 를 이전 구성에 추가합니다 .

@Bean
public ViewResolver resourceBundleViewResolver() {
    ResourceBundleViewResolver bean = new ResourceBundleViewResolver();
    bean.setBasename("views");
    return bean;
}

번들은 일반적으로 클래스 경로에있는 속성 파일에 정의됩니다. 다음은 views.properties 파일입니다.

sample.(class)=org.springframework.web.servlet.view.JstlView
sample.url=/WEB-INF/view/sample.jsp

위의 예에서 정의한 간단한 jsp 페이지를이 구성에도 사용할 수 있습니다.

5. XmlViewResolver 추가

ViewResolver 구현은 Spring의 XML 빈 팩토리 와 동일한 DTD사용하여 XML작성된 구성 파일을 허용합니다 .

@Bean
public ViewResolver xmlViewResolver() {
    XmlViewResolver bean = new XmlViewResolver();
    bean.setLocation(new ClassPathResource("views.xml"));
    return bean;
}

다음은 구성 파일 views.xml입니다 .

<bean id="xmlConfig" class="org.springframework.web.servlet.view.JstlView">
    <property name="url" value="/WEB-INF/view/xmlSample.jsp" />
</bean>

이전 예제의 경우 이전에 정의한 간단한 jsp 페이지를 사용할 수 있습니다 .

6. ViewResolvers 연결 및 주문 우선 순위 정의

Spring MVC는 다중 뷰 리졸버 도 지원합니다 .

이를 통해 일부 상황에서 특정보기를 재정의 할 수 있습니다. 구성에 둘 이상의 해석기를 추가하여 간단히보기 해석기를 연결할 수 있습니다.

이 작업을 마치면이 리졸버의 순서를 정의해야합니다. 순서 속성은 체인 호출 순서 인 정의하는데 사용된다. 순서 속성 (가장 큰 순서 번호)이 높을수록 나중에 뷰 리졸버가 체인에 배치됩니다.

순서를 정의하기 위해 뷰 리졸버의 구성에 다음 코드 줄을 추가 할 수 있습니다.

bean.setOrder(0);

InternalResourceViewResolver 는 매우 명시적인 매핑을 나타 내기 위해 더 높은 순서를 가져야 하므로 순서 우선 순위에주의하십시오 . 다른 리졸버의 순서가 더 높은 경우 InternalResourceViewResolver 가 호출되지 않을 수 있습니다.

7. 결론

이 예제에서는 Java 구성을 사용하여 뷰 리졸버 체인을 구성했습니다. 순서 우선 순위를 가지고 놀면서 우리는 그들의 호출 순서를 설정할 수 있습니다.

이 간단한 예제의 구현은 github 프로젝트 에서 찾을 수 있습니다 .