DevKim

[01] thymeleaf 템플릿 엔진 동작 원리 본문

Spring Boot

[01] thymeleaf 템플릿 엔진 동작 원리

on_doing 2021. 5. 6. 13:23
728x90

[ 템플릿 엔진 ( Template Engine ) 이란? ]

- 템플릿엔진은 웹 템플릿들과 웹 컨텐츠 정보를 처리하기 위해 설계된 소프트웨어이다.

- view code (HTML) 와 data logic code (db connection)을 분리해주는 기능을 한다

- 쉽게 말해서, 템플릿엔진을 사용하여 html문서를 원하는 모양으로 바꿀 수 있다.

 

다양한 Spring Template Engine 중에서 김영한 강사님은 Thymeleaf를 사용하여서

나또한 dependencies에 Thymeleaf를 추가하여 사용하기로했다.

 

이 전 toy project를 진행했을 땐, static 폴더에 html,css,js 파일을 각각 넣어두고

Ajax로 요청을 보내면 서버는 요청한 데이터만 주고 프론트엔드에서 재가공하여 보여주는 방식으로 코드를 짰었다.

 

데이터를 가공하는데 손이 많이 간다고 생각은 했지만,,

템플릿 엔진이라는게 있는지 몰랐다

 

[ 템플릿 엔진의 장점 ]

 

1. 많은 코드를 절약할 수 있다.

2. 재사용성이 높다

- Template을 만들어 놓고 여기에 데이터만 바꿔가면서 렌더링을 해주면 끝!

3. 유지보수에 용이하다

- 이 전의 방법으로는 수백개의 비슷한 모양의 HTML 페이지를 수정해야했었다.

Template Engine을 사용하면 동일한 Template을 사용한다는 전제하에 Template과 넘겨주는 데이터만 수정하면 끝!

 


[ 간단한 예시 ]

controller/HelloController
templates/hello.html

controller에서 "hello"를 return 해주면 왜 자동으로 ststic이 아닌 templates을 읽어오지?라고 생각했는데,

Spring의 동작과정을 보고 이해를 했다

 

[ 동작 과정 ]

자세히 들어가면 더 복잡하겠지만.. 큰 그림으로 봤을 때

- 웹 브라우저에서 요청을 받으면 톰켓 서버가 Spring한테 넘겨줌

- 우선순위가 높은 controller가 먼저 실행이되고

- controller에서 리턴 값으로 문자를 반환하면, 뷰 리졸버가 화면을 찾아서 처리

( Spring은 return 값을 기본적으로 resources>templates 폴더 밑에서 찾아줌 )


만약 관련 컨드롤러가 없다면?

- 톰켓 서버가 요청을 받고 Spring에 넘겨준 후, 컨트롤러쪽을 찾아봤는데 없다면

- 그때서야 다음 우선 순위인 static 파일에서 찾아서 반환을 해준다

( 이때는 변환없이 넘겨줌 )

 

*참고*

Spring-boot-devtools 라이브러리를 추가하면, html 파일 컴파일만 해주면 서버 재시작 없이

View 파일 변경이 가능하다

 

 

 

*자료 출처*

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 (김영한)

728x90
Comments