diff --git a/hutool-extra/src/main/java/cn/hutool/v7/extra/template/TemplateConfig.java b/hutool-extra/src/main/java/cn/hutool/v7/extra/template/TemplateConfig.java index bbea53e69..85b398b96 100644 --- a/hutool-extra/src/main/java/cn/hutool/v7/extra/template/TemplateConfig.java +++ b/hutool-extra/src/main/java/cn/hutool/v7/extra/template/TemplateConfig.java @@ -16,13 +16,14 @@ package cn.hutool.v7.extra.template; +import cn.hutool.v7.core.util.CharsetUtil; +import cn.hutool.v7.extra.template.engine.TemplateEngine; + +import java.io.Serial; import java.io.Serializable; import java.nio.charset.Charset; import java.util.Objects; -import cn.hutool.v7.core.util.CharsetUtil; -import cn.hutool.v7.extra.template.engine.TemplateEngine; - /** * 模板配置 * @@ -30,6 +31,7 @@ import cn.hutool.v7.extra.template.engine.TemplateEngine; * @since 4.1.0 */ public class TemplateConfig implements Serializable { + @Serial private static final long serialVersionUID = 2933113779920339523L; /** @@ -53,6 +55,10 @@ public class TemplateConfig implements Serializable { * 自定义引擎,当多个jar包引入时,可以自定使用的默认引擎 */ private Class customEngine; + /** + * 是否使用缓存 + */ + private boolean useCache = true; /** * 默认构造,使用UTF8编码,默认从ClassPath获取模板 @@ -119,9 +125,11 @@ public class TemplateConfig implements Serializable { * 设置编码 * * @param charset 编码 + * @return this */ - public void setCharset(final Charset charset) { + public TemplateConfig setCharset(final Charset charset) { this.charset = charset; + return this; } /** @@ -137,9 +145,11 @@ public class TemplateConfig implements Serializable { * 设置模板路径,如果ClassPath或者WebRoot模式,则表示相对路径 * * @param path 模板路径 + * @return this */ - public void setPath(final String path) { + public TemplateConfig setPath(final String path) { this.path = path; + return this; } /** @@ -155,9 +165,11 @@ public class TemplateConfig implements Serializable { * 设置模板资源加载方式 * * @param resourceMode 模板资源加载方式 + * @return this */ - public void setResourceMode(final ResourceMode resourceMode) { + public TemplateConfig setResourceMode(final ResourceMode resourceMode) { this.resourceMode = resourceMode; + return this; } /** @@ -183,6 +195,28 @@ public class TemplateConfig implements Serializable { return this; } + /** + * 是否使用缓存 + * + * @return 是否使用缓存 + * @since 5.8.38 + */ + public boolean isUseCache() { + return useCache; + } + + /** + * 设置是否使用缓存 + * + * @param useCache 是否使用缓存 + * @return this + * @since 5.8.38 + */ + public TemplateConfig setUseCache(boolean useCache) { + this.useCache = useCache; + return this; + } + /** * 资源加载方式枚举 * diff --git a/hutool-extra/src/main/java/cn/hutool/v7/extra/template/engine/thymeleaf/ThymeleafEngine.java b/hutool-extra/src/main/java/cn/hutool/v7/extra/template/engine/thymeleaf/ThymeleafEngine.java index cf7396ed7..46e73b4d3 100644 --- a/hutool-extra/src/main/java/cn/hutool/v7/extra/template/engine/thymeleaf/ThymeleafEngine.java +++ b/hutool-extra/src/main/java/cn/hutool/v7/extra/template/engine/thymeleaf/ThymeleafEngine.java @@ -126,6 +126,7 @@ public class ThymeleafEngine implements TemplateEngine { classLoaderResolver.setCharacterEncoding(config.getCharsetStr()); classLoaderResolver.setTemplateMode(TemplateMode.HTML); classLoaderResolver.setPrefix(StrUtil.addSuffixIfNot(config.getPath(), "/")); + classLoaderResolver.setCacheable(config.isUseCache()); resolver = classLoaderResolver; break; case FILE: @@ -133,6 +134,7 @@ public class ThymeleafEngine implements TemplateEngine { fileResolver.setCharacterEncoding(config.getCharsetStr()); fileResolver.setTemplateMode(TemplateMode.HTML); fileResolver.setPrefix(StrUtil.addSuffixIfNot(config.getPath(), "/")); + fileResolver.setCacheable(config.isUseCache()); resolver = fileResolver; break; case WEB_ROOT: @@ -140,6 +142,7 @@ public class ThymeleafEngine implements TemplateEngine { webRootResolver.setCharacterEncoding(config.getCharsetStr()); webRootResolver.setTemplateMode(TemplateMode.HTML); webRootResolver.setPrefix(StrUtil.addSuffixIfNot(FileUtil.getAbsolutePath(FileUtil.file(FileUtil.getWebRoot(), config.getPath())), "/")); + webRootResolver.setCacheable(config.isUseCache()); resolver = webRootResolver; break; case STRING: diff --git a/hutool-extra/src/main/java/cn/hutool/v7/extra/template/engine/velocity/VelocityEngine.java b/hutool-extra/src/main/java/cn/hutool/v7/extra/template/engine/velocity/VelocityEngine.java index 12e0f6f5a..69578fe09 100644 --- a/hutool-extra/src/main/java/cn/hutool/v7/extra/template/engine/velocity/VelocityEngine.java +++ b/hutool-extra/src/main/java/cn/hutool/v7/extra/template/engine/velocity/VelocityEngine.java @@ -136,7 +136,10 @@ public class VelocityEngine implements TemplateEngine { final String charsetStr = config.getCharset().toString(); ve.setProperty(Velocity.INPUT_ENCODING, charsetStr); // ve.setProperty(Velocity.OUTPUT_ENCODING, charsetStr); - ve.setProperty(Velocity.FILE_RESOURCE_LOADER_CACHE, true); // 使用缓存 + if(config.isUseCache()){ + // issue#IC3JRY 可定制是否使用缓存 + ve.setProperty(Velocity.FILE_RESOURCE_LOADER_CACHE, true); // 使用缓存 + } // loader switch (config.getResourceMode()) {