본문 바로가기
IT/spring

Spring ViewResolver 클래스

by 뉴코딩맨 2023. 6. 27.
Spring Framework는 웹 애플리케이션 개발을 위한 다양한 기능을 제공하는데, 그 중에서도 ViewResolver 클래스는 View와 관련된 설정을 처리하는 중요한 역할을 합니다. Spring ViewResolver 클래스에 대해 자세히 알아보고, 예시를 통해 설명하도록 하겠습니다.
 
 

ViewResolver란?

ViewResolver는 Spring에서 View를 찾아주는 역할을 합니다. 일반적으로 Controller에서 반환한 논리적인 View 이름을 실제 View로 변환하는 작업을 수행합니다. ViewResolver는 설정 파일에 등록하여 사용하며, 다양한 View 타입과 매핑할 수 있습니다.
 
 

ViewResolver의 동작 원리

Controller에서 반환한 논리적인 View 이름을 기반으로 ViewResolver는 실제 View를 찾습니다.
등록된 ViewResolver에서 우선순위에 따라 순서대로 View를 찾습니다.
View를 찾으면 해당 View를 반환하고, 찾지 못한 경우에는 오류를 처리합니다.
 
 

InternalResourceViewResolver

Spring에서 기본적으로 제공하는 ViewResolver 클래스 중 하나는 InternalResourceViewResolver입니다. 이 클래스는 JSP와 같은 서버사이드 템플릿 엔진과의 연동을 담당합니다.
 
InternalResourceViewResolver의 설정은 다음과 같이 이루어집니다.
 
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/" />
    <property name="suffix" value=".jsp" />
</bean>
 
prefix: View의 경로에 접두사를 추가합니다. 위의 설정 예시에서는 /WEB-INF/views/로 설정되어 있습니다.
suffix: View의 확장자를 설정합니다. 위의 설정 예시에서는 .jsp로 설정되어 있습니다.
이러한 설정을 통해 Controller에서 반환된 논리적인 View 이름에 접두사와 확장자가 추가되어 실제 JSP 파일을 찾아줍니다.
 
 

ViewResolver 예시

다음은 InternalResourceViewResolver를 사용하는 예시입니다.
 
@Controller
public class MyController {
    @RequestMapping("/hello")
    public String hello(Model model) {
        model.addAttribute("message", "Hello, Spring!");
        return "hello";
    }
}
 
위의 예시에서 return "hello";는 Controller에서 반환되는 논리적인 View 이름입니다. InternalResourceViewResolver는 이 View 이름을 기반으로 /WEB-INF/views/hello.jsp 파일을 찾아서 처리합니다.
 
 

마무리

Spring Framework의 ViewResolver 클래스에 대해 알아보았습니다. ViewResolver는 Controller에서 반환된 논리적인 View 이름을 실제 View로 변환하는 역할을 수행합니다. InternalResourceViewResolver를 예시로 살펴봄으로써 ViewResolver의 동작 원리와 사용법을 이해할 수 있었습니다.
 

'IT > spring' 카테고리의 다른 글

스프링 DispatcherServlet 인코딩 설정  (0) 2023.06.28
스프링 DispatcherServlet  (0) 2023.06.28
스프링 HandlerMapping 클래스  (0) 2023.06.27
스프링 Model 2 아키텍처  (0) 2023.06.26
스프링 Model 1 아키텍처 구조  (0) 2023.06.23

댓글