spring

뷰 리졸버

Beencle 2023. 3. 21. 21:12

이번에는 뷰 리졸버에 대해서 자세히 알아보자

application.properties 에 다음 코드를 추가하자

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

스프링 부트는 InternalResourceViewResolver 라는 뷰 리졸버를 자동으로 등록하는데, 이때 application.properties 에 등록한 spring.mvc.view.prefix , spring.mvc.view.suffix 설정 정보를 사용해서 등록한다.

 

스프링 부트가 자동 등록하는 뷰 리졸버

(실제로는 더 많지만, 중요한 부분 위주로 설명하기 위해 일부 생략)

  1. 1순위 = BeanNameViewResolver : 빈 이름으로 뷰를 찾아서 반환한다. (예: 엑셀 파일 생성 기능에 사용)
  2. 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 는 forward() 를 사용해서 JSP를 실행한다.