ViewResolver
: controller에서 요청하는 뷰를 찾아서 DispatcherServlet으로 반환함
- 동작 순서 )
- DispatcherServlet이 클라이언트에게 HTTP 요청을 받음
- DispatcherServlet에서 핸들러 매핑을 통해 해당 HTTP를 실행할 컨트롤러를 찾음
- 컨트롤러를 실행할 핸들러 어댑터를 핸들러 어댑터 목록에서 찾음
- 찾은 핸들러 어댑터를 통해 컨트롤러에 접근
- 컨트롤러 실행
- 핸들러 어댑터를 컨트롤러에서 반환한 ModelAndView를 DispatcherServlet에 전달
- ModelAndView를 ViewResolver로 통해 논리적 이름을 물리 이름으로 변화하여 랜더링 역할을 담당하는 View를 DispatcherServlet에 반환
- View를 랜더링한 후 클라이언트에게 전달
종류
1. InternalResourceViewResolver
: 기본적으로 설정된 ViewResolver
- JSP는 webapp/WEB-INF 밑에서 작동하기 때문에 jsp파일의 경로를 설정해줘야 함
2. BeanNameViewResolver
: View 타입 중에서 같은 이름을 가진 빈을 고름
- ViewResolverChain에서 유용하게 쓰임
- 이 구현체는 재정의하거나 교체할 필요가 없음
3. ContentNegotiatingViewResolver
: View 타입의 빈이 실제로 존재하는 경우에만 추가됨
- 이 구현체는 compoiste 리졸버로, 다른 구현체들에 위임해서 클라이언트가 전송된 Accept Http 헤더와 일치하는 항목을 찯음
4. ThymeleafViewResolver
: Thymeleaf 템플릿을 사용하면 위와 같은 ViewResolver가 추가됨
- 이 구현체는 뷰 이름에 prefix와 suffix를 감싼 뒤 리소스를 찾음
- 같은 이름으로 빈을 정의하면 ThymeleafView를 재정의할 수 있음
5. FreeMarkerViewResolver
: FreeMarker를 사용하면 위와 같은 ViewResolver가 추가됨
- 이 구현체는 뷰 이름에 prefix와 suffix를 붙인 뒤 로더 경로에서 리소스를 찾음
- 같은 이름으로 빈을 정의하면 FreeMarkerViewResolver를 재정의할 수 있음
6. GroovyMarkupViewResolver
: Groovy 템플릿을 사용하면 위와 같은 GroovyMarkupViewResolver가 추가됨
- 이 구현체는 뷰 이름에 prefix와 suffix를 분인 뒤 로더 경로에서 리소스를 찾음
- 같은 이름으로 빈을 정의하면 GroovyMarkupViewResolver를 재정의할 수 있음
7. MustacheViewResolver
: Mustache를 사용하면 위와 같은 MustacheViewResolver가 추가됨
- 이 구현체는 뷰 이름에 prefix와 suffix를 감싼 뒤 리소스를 찾음
- 같은 이름으로 빈을 정의하면 MustacheViewResolver를 재정의할 수 있음
'SPRING' 카테고리의 다른 글
15. SpringSecurity 개념, 인증 처리 과정, currentUser 정보 (0) | 2025.06.06 |
---|---|
14. @Valid를 사용해서 DTO 검증 (0) | 2025.06.06 |
12. @Controller vs @RestController (0) | 2025.05.26 |
11. Web MVC 요청 처리 과정 (0) | 2025.05.26 |
10. Spring vs SpringBoot (0) | 2025.05.26 |