@@ -0,0 +1,20 @@
+package org.ssssssss.magicapi.config;
+
+import org.ssssssss.magicapi.cache.DefaultSqlCache;
+import org.ssssssss.magicapi.utils.MD5Utils;
+import org.ssssssss.script.MagicScript;
+public class MagicScriptCompiler {
+ private static DefaultSqlCache compileCache = new DefaultSqlCache(500, -1);
+ public static MagicScript compile(String script) {
+ String key = MD5Utils.encrypt(script);
+ MagicScript magicScript = (MagicScript) compileCache.get("default", key);
+ if(magicScript == null){
+ magicScript = MagicScript.create(script);
+ compileCache.put("default",key,magicScript,-1);
+ }
+ return magicScript;
+}
@@ -69,7 +69,7 @@ public class RequestHandler {
return value;
}
- Object value = MagicScriptEngine.execute(info.getScript(), context);
+ Object value = MagicScriptEngine.execute(MagicScriptCompiler.compile(info.getScript()), context);
// 执行后置拦截器
for (RequestInterceptor requestInterceptor : requestInterceptors) {
Object target = requestInterceptor.postHandle(info, context, value);
@@ -158,7 +158,7 @@ public class WebUIController {
try {
context.setBreakpoints((List<Integer>) breakpoints);
context.setTimeout(this.debugTimeout);
- Object result = MagicScriptEngine.execute(script.toString(), context);
+ Object result = MagicScriptEngine.execute(MagicScriptCompiler.compile(script.toString()), context);
if (context.isRunning()) {
return new JsonBodyBean<>(1000, context.getId(), resultProvider.buildResult(1000, context.getId(), result), result);
} else if (context.isException()) {