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

This commit is contained in:
Looly
2025-04-26 11:37:06 +08:00
parent 80eccf98bb
commit 8b3e6c99c4
3 changed files with 47 additions and 7 deletions

View File

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

View File

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

View File

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