TemplateConfig增加setUseCache方法(issue#IC3JRY@Gitee)

This commit is contained in:
Looly 2025-04-26 11:31:22 +08:00
parent 92d3eaeead
commit 6d8764eb03
4 changed files with 38 additions and 4 deletions

View File

@ -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

View File

@ -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<? extends TemplateEngine> 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;
}
/**
* 资源加载方式枚举
*

View File

@ -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:

View File

@ -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()) {