Spring Boot 推荐使用 Thymeleaf 作为其模板引擎。SpringBoot 为 Thymeleaf 提供了一系列默认配置,项目中一但导入了 Thymeleaf 的依赖,相对应的自动配置 (ThymeleafAutoConfiguration 或 FreeMarkerAutoConfiguration) 就会自动生效,因此 Thymeleaf 可以与 Spring Boot 完美整合 。
Spring Boot 整合 Thymeleaf 模板引擎,需要以下步骤:
- 引入 Starter 依赖
- 创建模板文件,并放在在指定目录下
引入依赖
Spring Boot 整合 Thymeleaf 的第一步,就是在项目的 pom.xml 中添加 Thymeleaf 的 Starter 依赖,代码如下。
- <!--Thymeleaf 启动器-->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-thymeleaf</artifactId>
- </dependency>
创建模板文件
Spring Boot 通过 ThymeleafAutoConfiguration 自动配置类对 Thymeleaf 提供了一整套的自动化配置方案,该自动配置类的部分源码如下。
- @Configuration(
- proxyBeanMethods = false
- )
- @EnableConfigurationProperties({ThymeleafProperties.class})
- @ConditionalOnClass({TemplateMode.class, SpringTemplateEngine.class})
- @AutoConfigureAfter({WebMvcAutoConfiguration.class, WebFluxAutoConfiguration.class})
- public class ThymeleafAutoConfiguration {
- }
ThymeleafAutoConfiguration 使用 @EnableConfigurationProperties 注解导入了 ThymeleafProperties 类,该类包含了与 Thymeleaf 相关的自动配置属性,其部分源码如下。
- @ConfigurationProperties(
- prefix = "spring.thymeleaf"
- )
- public class ThymeleafProperties {
- private static final Charset DEFAULT_ENCODING;
- public static final String DEFAULT_PREFIX = "classpath:/templates/";
- public static final String DEFAULT_SUFFIX = ".html";
- private boolean checkTemplate = true;
- private boolean checkTemplateLocation = true;
- private String prefix = "classpath:/templates/";
- private String suffix = ".html";
- private String mode = "HTML";
- private Charset encoding;
- private boolean cache;
- ...
- }
ThymeleafProperties 通过 @ConfigurationProperties 注解将配置文件(application.properties/yml) 中前缀为 spring.thymeleaf 的配置和这个类中的属性绑定。