Spring ,Thymeleaf TemplateEngine

Thymeleaf TemplateEngine을 사용한 이메일 템플릿처리

이메일 발송요건이 생겼다.

공통화 된 템플릿 기반에서 동적으로 생성되어 전송 되야 했다.

스프링부트에서 viewTemplate이 뭐가 있을까 생각해봤는데

Velocity, Tymeleaf가 대표적이었다.

그중 나는 별다른 고민 없이 Thymeleaf TemplateEngine으로 이메일 템플릿을 렌더링하기로 했다.
(그냥 써보고 싶어서 정했다.)

Thymeleaf공홈을 참조 하여 dependency를 추가하자

gradle 을 사용중이기 때문에 build.gradled에 아래와 같은 dependency를 추가했다.

// tymeleaf
compile “org.thymeleaf:thymeleaf”

스프링 부트라면 springboot-starter-thymeleaf
스프링 4라면 thymeleaf-spring4를 추가하여 , viewResolver의 viewTemplate으로 설정이 가능하겠지만.

나는 단순히 이메일 템플릿으로만 사용할 목적이기 때문에
Thymeleaf의 TemplateEngine만 사용하여 빈으로 등록했다.

빈을 @Component로써 아래와 같이 설정하였다.

IResourceResolver를 정의해야한다.

viewTemplate으로 용할때는
thymeleaf-spring4의 SpringResourceResolver를 사용하기때문에 자동적으로 적용이 되지만 , thymeleaf-spring4를 dependency거는 순간 viewTemplate이 등록 되기 때문에 SpringResourceResolver를 참고하여 ApplicationContext를 넘기는 식으로 익명 클래스를 작성했다.

작성한 TemplateEngine Bean은 그냥 사용하며 되겟다.

파일명과 파라미터 context 를 넘기면 해당 템플릿의 리소스를 찾어 context로 렌더링된 String을 얻을수 있다.

Written by

엘디는 사랑입니다.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store