Skip to content

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 对象的方式有很多种,但目前这几行代码足以让我们掌握所需的核心配置步骤。

关键代码解释

  1. 模板解析器创建WebApplicationTemplateResolver 基于 Servlet 应用上下文解析模板文件,是 Web 环境下最常用的解析器。
  2. 模板模式设置setTemplateMode(TemplateMode.HTML) 显式指定处理 HTML 模板(默认也是 HTML,此处为代码可读性而显式设置)。
  3. 路径配置
    • setPrefix("/WEB-INF/templates/"):指定模板文件的基础路径,避免每次写全路径;
    • setSuffix(".html"):自动为模板名称追加后缀,简化模板引用(如写 home 即可匹配 home.html)。
  4. 缓存配置
    • setCacheTTLMs(3600000L):设置缓存有效期 1 小时(3600000 毫秒);
    • setCacheable(true):开启缓存(开发阶段可设为 false,修改模板后无需重启应用即可生效)。
  5. 绑定解析器到引擎:通过 setTemplateResolver 将配置好的解析器关联到模板引擎,完成核心初始化。

总结

  1. Thymeleaf 模板引擎初始化的核心是配置 TemplateResolver(模板解析器),主要指定模板的存储路径、格式、缓存规则。
  2. prefix + 模板名 + suffix 的路径拼接规则是 Thymeleaf 定位模板文件的核心方式,能大幅简化模板引用。
  3. 缓存配置是生产环境优化的关键(开启缓存提升性能),开发环境建议关闭缓存以方便调试。