From 6d8764eb03f620ca15234c1edfbdea2bf29f9303 Mon Sep 17 00:00:00 2001 From: Looly Date: Sat, 26 Apr 2025 11:31:22 +0800 Subject: [PATCH] =?UTF-8?q?`TemplateConfig`=E5=A2=9E=E5=8A=A0`setUseCache`?= =?UTF-8?q?=E6=96=B9=E6=B3=95=EF=BC=88issue#IC3JRY@Gitee=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 3 +- .../hutool/extra/template/TemplateConfig.java | 31 +++++++++++++++++-- .../engine/thymeleaf/ThymeleafEngine.java | 3 ++ .../engine/velocity/VelocityEngine.java | 5 ++- 4 files changed, 38 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 90feccdaa..0b42689d7 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ # 🚀Changelog ------------------------------------------------------------------------------------------------------------- -# 5.8.38(2025-04-21) +# 5.8.38(2025-04-26) ### 🐣新特性 * 【core 】 `PathUtil#del`增加null检查(pr#1331@Gitee) @@ -11,6 +11,7 @@ * 【core 】 `CharSequenceUtil`增加toLoweCase和toUpperCase方法(issue#IC0H2B@Gitee) * 【core 】 增加分段锁实现`SegmentLock`(pr#1330@Gitee) * 【core 】 重载subtractToList方法,提供isLinked选项(pr#3923@Github) +* 【extra 】 `TemplateConfig`增加`setUseCache`方法(issue#IC3JRY@Gitee) ### 🐞Bug修复 * 【setting】 修复`Setting`autoLoad可能的加载为空的问题(issue#3919@Github) diff --git a/hutool-extra/src/main/java/cn/hutool/extra/template/TemplateConfig.java b/hutool-extra/src/main/java/cn/hutool/extra/template/TemplateConfig.java index 47c922340..792ad407e 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/template/TemplateConfig.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/template/TemplateConfig.java @@ -1,11 +1,11 @@ package cn.hutool.extra.template; +import cn.hutool.core.util.CharsetUtil; + import java.io.Serializable; import java.nio.charset.Charset; import java.util.Objects; -import cn.hutool.core.util.CharsetUtil; - /** * 模板配置 * @@ -34,6 +34,11 @@ public class TemplateConfig implements Serializable { */ private Class customEngine; + /** + * 是否使用缓存 + */ + private boolean useCache = true; + /** * 默认构造,使用UTF8编码,默认从ClassPath获取模板 */ @@ -163,6 +168,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/extra/template/engine/thymeleaf/ThymeleafEngine.java b/hutool-extra/src/main/java/cn/hutool/extra/template/engine/thymeleaf/ThymeleafEngine.java index 7ebeea2ea..953a39877 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/template/engine/thymeleaf/ThymeleafEngine.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/template/engine/thymeleaf/ThymeleafEngine.java @@ -106,6 +106,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: @@ -113,6 +114,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: @@ -120,6 +122,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/extra/template/engine/velocity/VelocityEngine.java b/hutool-extra/src/main/java/cn/hutool/extra/template/engine/velocity/VelocityEngine.java index 705bd3604..05ac68fe5 100644 --- a/hutool-extra/src/main/java/cn/hutool/extra/template/engine/velocity/VelocityEngine.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/template/engine/velocity/VelocityEngine.java @@ -115,7 +115,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()) {