深色模式
2.2 创建和配置模板引擎
我们过滤器中的 init(…) 方法包含了这一行代码:
java
this.templateEngine = buildTemplateEngine(this.application);现在我们来看一看 org.thymeleaf.TemplateEngine 对象是如何初始化的:
java
private static ITemplateEngine buildTemplateEngine(final IWebApplication application) {
// 模板将被解析为应用(ServletContext)资源
final WebApplicationTemplateResolver templateResolver =
new WebApplicationTemplateResolver(application);
// HTML 是默认模式,但为了让代码更易理解,我们仍显式设置
templateResolver.setTemplateMode(TemplateMode.HTML);
// 这会将 "home" 解析为 "/WEB-INF/templates/home.html"
templateResolver.setPrefix("/WEB-INF/templates/");
templateResolver.setSuffix(".html");
// 设置模板缓存的生存时间(TTL)为 1 小时。若不设置,缓存条目会一直保留,直到被 LRU 算法淘汰
templateResolver.setCacheTTLMs(Long.valueOf(3600000L));
// 缓存默认开启。如果希望模板修改后自动更新,可设为 false
templateResolver.setCacheable(true);
final TemplateEngine templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
return templateEngine;
}配置 TemplateEngine 对象的方式有很多种,但目前这几行代码足以让我们掌握所需的核心配置步骤。
关键代码解释
- 模板解析器创建:
WebApplicationTemplateResolver基于 Servlet 应用上下文解析模板文件,是 Web 环境下最常用的解析器。 - 模板模式设置:
setTemplateMode(TemplateMode.HTML)显式指定处理 HTML 模板(默认也是 HTML,此处为代码可读性而显式设置)。 - 路径配置:
setPrefix("/WEB-INF/templates/"):指定模板文件的基础路径,避免每次写全路径;setSuffix(".html"):自动为模板名称追加后缀,简化模板引用(如写home即可匹配home.html)。
- 缓存配置:
setCacheTTLMs(3600000L):设置缓存有效期 1 小时(3600000 毫秒);setCacheable(true):开启缓存(开发阶段可设为false,修改模板后无需重启应用即可生效)。
- 绑定解析器到引擎:通过
setTemplateResolver将配置好的解析器关联到模板引擎,完成核心初始化。
总结
- Thymeleaf 模板引擎初始化的核心是配置
TemplateResolver(模板解析器),主要指定模板的存储路径、格式、缓存规则。 prefix + 模板名 + suffix的路径拼接规则是 Thymeleaf 定位模板文件的核心方式,能大幅简化模板引用。- 缓存配置是生产环境优化的关键(开启缓存提升性能),开发环境建议关闭缓存以方便调试。
