반응형
타임리프는 스프링 없이도 동작하지만 스프링과 통합을 위한 다양한 기능을 제공해주는데, 이러한 부분이 스프링으로 백엔드를 개발하는 개발자가 자연스레 접근하는 계기가 된다.
기본 매뉴얼: https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html
스프링 통합 매뉴얼: https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html
스프링 통합으로 추가되는 기능
- 스프링의 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)
반응형
'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 |
댓글