예제 코드
@Component("/springmvc/old-controller")
public class OldController implements Controller {
    private static final String VIEW_NAME = "new-form";
    @Override
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        System.out.println("OldController.handleRequest");
        return new ModelAndView(VIEW_NAME);
    }
}
application.yml
spring:
  mvc:
    view:
      prefix: /WEB-INF/views/
      suffix: .jsp
뷰 리졸버 - InteralResourceViewResolver
- 스프링 부트는 InternalResourceViewResolver라는 뷰 리졸버를 자동으로 등록한다.
 
- 이 때 application.yml에 등록한 설정 정보를 사용해서 등록한다.
 
뷰 리졸버 동작 방식

스프링 부트가 자동으로 등록하는 뷰 리졸버
1 = BeanNameViewResolver : 빈 이름으로 뷰를 찾아서 반환한다.
2 = InternalResourceViewResolver : JSP를 처리할 수 있는 뷰를 반환한다.
1. 핸들러 어댑터 호출
- 핸들러 어댑터를 통해 
new-form이라는 논리 뷰 이름을 획득한다. 
2. ViewResolver 호출
new-form이라는 뷰 이름으로 viewResolver를 순서대로 호출한다. 
- BeanNameViewResolver는 
new-form이라는 이름의 스프링 빈으로 등록된 뷰를 찾아야 하는데 없다. 
- InternalResourceViewResolver가 호출된다.
 
3. InternalResourceViewResolver
- 이 뷰 리졸버는 InternalResourceView를 반환한다.
 
4. InternalResourceView
- InternalResourceView는 JSP처럼 forward()를 호출해서 처리할 수 있는 경우에 사용한다.
 
5. view.render()
- view.render()가 호출되고 InternalResourceView는 forawd()를 사용해서 JSP를 실행한다.
 
참고
- InternalResourceViewResolver는 만약 JSTL 라이브러리가 있으면 InternalResourceView를 상속받은 JstlView를 반환한다.
 
- JstlView는 JSTL 태그 사용시 약간의 부가 기능이 추가된다.
 
- 다른 뷰는 실제 뷰를 렌더링 하지만 JSP의 경우 forward()를 통해서 해당 JSP로 이동(실행)해야 렌더링이 된다.
 
- JSP를 제외한 나머지 뷰 템플릿들은 forward() 과정 없이 바로 렌더링 된다.
 
- Thymeleaf 뷰 템플릿을 사용하면 ThymeleafViewResolver를 등록해야 한다.
 
- 최근에는 라이브러리만 추가하면 스프링부트가 이런 작업도 모두 자동화 해준다.