[Spring] 뷰 리졸버 (View Resolver)와 템플릿 엔진 (Template Engine)이란?

KUKJIN LEE's profile picture

KUKJIN LEE1주 전 작성

View 수요가 계속 감소하고 있습니다. 기존 JSP 유지보수 코드도 계속 감소하고, 꾸준히 우상향 하던 Thymeleaf도 감소로 돌아서기 시작했습니다. 그럼에도 다양한 곳에서 수요가 존재하기 때문에 알아가면 좋습니다.

[카테고리를 백엔드로 선택했지만, View Resolver와 Template Engine은 프론트엔드와 협력하여 작업을 처리하는 요소이기 때문에 백엔드로만 한정할 수 없습니다. 이 두 개념은 주로 서버 측에서 뷰를 구성하고 렌더링하는 역할을 담당하기 때문에 백엔드에 포함시킨 것입니다.]

 

뷰 리졸버 (View Resolver)

  1. 역할: 컨트롤러가 반환한 뷰 이름을 실제 뷰 파일로 맵핑하는 역할을 담당합니다.

  2. 동작 방식

    • 컨트롤러가 논리적인 뷰 이름을 반환합니다.

    • 뷰 리졸버가 이 이름을 바탕으로 실제 뷰 파일의 위치를 찾아냅니다.

    • 찾아낸 뷰 파일을 템플릿 엔진에 전달하여 렌더링을 요청합니다.

  3. 장점

    • 뷰의 위치나 종류가 변경되어도 컨트롤러 코드를 수정할 필요가 없어 유연성이 향상됩니다.

    • 논리적 뷰 이름과 실제 뷰 구현을 분리하여 관리할 수 있습니다.

템플릿 엔진 (Template Engine)

  • 역할: 데이터를 결합하여 최종적인 뷰(HTML)를 생성하는 역할을 담당합니다.

  • 주요 기능

    • 정적 HTML에 동적 데이터를 삽입할 수 있게 해줍니다.

    • 조건문, 반복문 등의 로직을 뷰에서 사용할 수 있게 합니다.

    • 레이아웃 템플릿을 지원하여 중복 코드를 줄일 수 있습니다.

  • 대표적인 템플릿 엔진

    • Thymeleaf: 스프링에서 권장하는 모던 서버사이드 자바 템플릿 엔진

    • JSP (JavaServer Pages): 자바 기반의 전통적인 템플릿 엔진

  • 장점

    • 뷰 로직과 비즈니스 로직을 분리하여 관리할 수 있습니다.

    • 재사용 가능한 템플릿 조각을 만들어 코드 중복을 줄일 수 있습니다.

    • 동적 컨텐츠 생성이 용이해집니다.

뷰 리졸버와 템플릿 엔진은 MVC 아키텍처에서 뷰 계층을 담당하며, 이들의 조합으로 효율적이고 유지보수가 용이한 뷰 처리 로직을 구현할 수 있습니다.

New Tech Posts