다수의 ViewResolver들을 등록해 둘 수 있습니다. 그 때 특정 view 이름을 해석할 View Resolver들을 순서대로 나열하는 것을 Chaining ViewResolver라고 하는 것 같습니다. ViewResolver들의 순서는 Ordered 인터페이스를 사용하여 설정할 수 있습니다.

레퍼런스의 예를 보겠습니다.

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

<bean id="excelViewResolver" class="org.springframework.web.servlet.view.XmlViewResolver">
  <property name="order" value="1"/>
  <property name="location" value="/WEB-INF/views.xml"/>
</bean>

<!-- in views.xml -->

<beans>
  <bean name="report" class="org.springframework.example.ReportExcelView"/>
</beans>

이렇게 등록 해두면 InternalResourceViewResolver는 특성상 ViewReslove 체인의 맨 마지막에 위치 하기 때문에 굳이 ExcelViewResolver에 order 속성에 숫자를 주지 않아도 되겠죠.

만약에 해당 ViewResolver에서 적당한 view를 찾지 못하면 그 다음 ViewResolver를 사용하여 찾게 됩니다. 끝까지 못찾으면 Exception이 발생합니다.

InternalResouceViewResolver와 VelocityViewResolver, FreeMarkerViewResolver 들은 맨 뒤에 위치 해야 합니다.