본문 바로가기
SSR/Thymeleaf

Thymeleaf (5)

by oncerun 2022. 1. 5.
반응형

타임리프는 스프링 없이도 동작하지만 스프링과 통합을 위한 다양한 기능을 제공해주는데, 이러한 부분이 스프링으로 백엔드를 개발하는 개발자가 자연스레 접근하는 계기가 된다.

 

기본 매뉴얼: https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html

스프링 통합 매뉴얼: https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html

 

Tutorial: Thymeleaf + Spring

Preface This tutorial explains how Thymeleaf can be integrated with the Spring Framework, especially (but not only) Spring MVC. Note that Thymeleaf has integrations for both versions 3.x and 4.x of the Spring Framework, provided by two separate libraries c

www.thymeleaf.org

 

스프링 통합으로 추가되는 기능

  • 스프링의 SpringEL 문법 통합
  • ${@myBean.doSomething()}처럼 스프링 빈 호출 지원
  • 편리한 폼 관리를 위한 추가 속성
  • th:object (기능 강화, 폼 커맨드 객체 선택)
  • th:field , th:errors , th:errorclass

 

폼 컴포넌트 기능

  • checkbox, radio button, List 등을 편리하게 사용할 수 있는 기능 지원
  • 스프링의 메시지, 국제화 기능의 편리한 통합
  • 스프링의 검증, 오류 처리 통합
  • 스프링의 변환 서비스 통합(ConversionService)

 

 

환경설정

 

Spring을 사용하는 프로젝트에 타임리프를 사용하려면 몇 가지 설정이 필요하다.

 

1. bean을 등록해야한다. 

@Bean
public SpringResourceTemplateResolver templateResolver(){
    // SpringResourceTemplateResolver automatically integrates with Spring's own
    // resource resolution infrastructure, which is highly recommended.
    SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
    templateResolver.setApplicationContext(this.applicationContext);
    templateResolver.setPrefix("/WEB-INF/templates/");
    templateResolver.setSuffix(".html");
    // HTML is the default value, added here for the sake of clarity.
    templateResolver.setTemplateMode(TemplateMode.HTML);
    // Template cache is true by default. Set to false if you want
    // templates to be automatically updated when modified.
    templateResolver.setCacheable(true);
    return templateResolver;
}

@Bean
public SpringTemplateEngine templateEngine(){
    // SpringTemplateEngine automatically applies SpringStandardDialect and
    // enables Spring's own MessageSource message resolution mechanisms.
    SpringTemplateEngine templateEngine = new SpringTemplateEngine();
    templateEngine.setTemplateResolver(templateResolver());
    // Enabling the SpringEL compiler with Spring 4.2.4 or newer can
    // speed up execution in most scenarios, but might be incompatible
    // with specific cases when expressions in one template are reused
    // across different data types, so this flag is "false" by default
    // for safer backwards compatibility.
    templateEngine.setEnableSpringELCompiler(true);
    return templateEngine;
}

 

2. View and ViewResolvers를 등록한다.

 

@Bean
public ThymeleafViewResolver viewResolver(){
    ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
    viewResolver.setTemplateEngine(templateEngine());
    // NOTE 'order' and 'viewNames' are optional
    viewResolver.setOrder(1);
    viewResolver.setViewNames(new String[] {".html", ".xhtml"});
    return viewResolver;
}

 

이러한 과정을 타임리프 스프링 통합 매뉴얼에 전부 나와있기 때문에 문서를 보고 진행해도 된다.

하지만 스프링 부트를 사용하여 spirng-boot-start-thymeleaf의 라이브러리를 추가했다면 스프링 부트가 이러한 빈과 뷰 리졸버를 전부 자동적으로 세팅해주기 때문에 추가적으로 빈을 생성하거나,  추가할 필요가 없다.

 

 

추가적으로 스프링 부트의 application.properties에서 타임리프 관련 설정을 변경할 수 있는데 이러한 설정 정보도 메뉴얼에 나와있다.

Common Application Properties (spring.io)

 

Common Application Properties

 

docs.spring.io

 

반응형

'SSR > Thymeleaf' 카테고리의 다른 글

Thymeleaf (4)  (0) 2022.01.05
Thymeleaf (3)  (0) 2022.01.04
Thymeleaf (2)  (0) 2022.01.04
Thymeleaf (1)  (0) 2022.01.03

댓글