스프링 MVC 1편 (백엔드 웹 개발 핵심 기술)

Ch05. 스프링 MVC(구조 이해) - 뷰 리졸버

webmaster 2022. 3. 5. 10:47
728x90

ModelAndView 를 반환하도록 작성

  • application.properties 에 ViewResolver 설정 추가
    • spring.mvc.view.prefix=/WEB-INF/views/
      spring.mvc.view.suffix=.jsp
  • 스프링 부트는 InternalResourceViewResolver라는 뷰 리졸버를 자동으로 등록하는데, 이때 application.properties 에 등록한 spring.mvc.view.prefix , spring.mvc.view.suffix 설정 정보를 사용해서 등록한다.
    • 스프링 부트가 자동 등록하는 뷰 리졸버(실제로는 더 많지만, 중요한 부분 위주로 설명하기 위해 일부 생략)
      1. BeanNameViewResolver : 빈 이름으로 뷰를 찾아서 반환한다. (예: 엑셀 파일 생성 기능에 사용) 
      2. InternalResourceViewResolver : JSP를 처리할 수 있는 뷰를 반환한다.
  • 동작 과정
    • 핸들러 어댑터 호출
      • 핸들러 어댑터를 통해 new-form이라는 논리 뷰 이름을 획득한다.
    • ViewResolver 호출
      • new-form 이라는 뷰 이름으로 viewResolver를 순서대로 호출한다.
      • BeanNameViewResolver는 new-form이라는 이름의 스프링 빈으로 등록된 뷰를 찾아야 하는데 없다.
      • InternalResourceViewResolver 가 호출된다.
    • InternalResourceViewResolver
      • 이 뷰 리졸버는 InternalResourceView를 반환한다.
    • 뷰 - InternalResourceView
      • InternalResourceView는 JSP처럼 포워드 forward()를 호출해서 처리할 수 있는 경우에 사용한다. 
    • view.render()
      • view.render()가 호출되고 InternalResourceView는 forward()를 사용해서 JSP를 실행한다.
  • 참고 
    • Thymeleaf 뷰 템플릿을 사용하면 ThymeleafViewResolver를 등록해야 한다. 최근에는 라이브러리만 추가하면 스프링 부트가 이런 작업도 모두 자동화해준다.
728x90