From 6601d3ecbdcb94a014eaebe275bf824e2c25ef1a Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Fri, 08 Jul 2022 19:01:35 +0800 Subject: [PATCH] fix --- src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java | 9 ++++++--- src/main/java/com/xcong/farmer/cms/utils/GroovySingleton.java | 27 +++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java b/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java index f97655c..e43cfca 100644 --- a/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java +++ b/src/main/java/com/xcong/farmer/cms/core/node/AttrNode.java @@ -8,6 +8,7 @@ import com.xcong.farmer.cms.core.tag.TagsEnum; import com.xcong.farmer.cms.core.template.Configuration; import com.xcong.farmer.cms.core.template.TemplateConfiguration; +import com.xcong.farmer.cms.utils.GroovySingleton; import groovy.lang.Binding; import groovy.lang.GroovyShell; import org.apache.commons.text.StringSubstitutor; @@ -213,7 +214,8 @@ // } // } - Binding binding = new Binding(); + GroovyShell groovyShell = GroovySingleton.getSingleton(); + Binding binding = groovyShell.getContext(); for (Map.Entry<String, Object> entry : this.parserData.entrySet()) { String fieldKey = entry.getKey(); Map<String, Object> data = (Map<String, Object>) entry.getValue(); @@ -224,13 +226,14 @@ binding.setProperty("system", systemData); } - GroovyShell shell = new GroovyShell(binding); - Object evaluate = shell.evaluate(group); +// GroovyShell shell = new GroovyShell(binding); + Object evaluate = groovyShell.evaluate(group); if (evaluate == null) { targetData.put(group, ""); } else { targetData.put(group, evaluate.toString()); } + groovyShell.getClassLoader().clearCache(); } StringSubstitutor str = new StringSubstitutor(targetData); diff --git a/src/main/java/com/xcong/farmer/cms/utils/GroovySingleton.java b/src/main/java/com/xcong/farmer/cms/utils/GroovySingleton.java new file mode 100644 index 0000000..744de71 --- /dev/null +++ b/src/main/java/com/xcong/farmer/cms/utils/GroovySingleton.java @@ -0,0 +1,27 @@ +package com.xcong.farmer.cms.utils; + +import groovy.lang.Binding; +import groovy.lang.GroovyShell; + +/** + * @author wzy + * @date 2022-07-08 + **/ +public class GroovySingleton { + private volatile static GroovyShell groovyShell; + + private GroovySingleton (){} + + public static GroovyShell getSingleton() { + if (groovyShell == null) { + synchronized (GroovySingleton.class) { + if (groovyShell == null) { + Binding binding = new Binding(); + groovyShell = new GroovyShell(binding); + } + } + } + return groovyShell; + } + +} -- Gitblit v1.9.1