groovy-script-executor
目标:简化 Groovy 作为动态脚本场景的工作
相比直接使用 GroovyShell,我们为脚本场景做了些方便使用的封装。已应用于内部很多项目,这是抽出的一个简化版本。
详细 features:
//PHASE 1:脚本引擎初始化线程执行
ScriptEngine scriptEngine = new GroovyScriptEngine();
//沙箱功能的拦截器:(可选,但建议有)
scriptEngine.addGroovyInterceptor(new NoSystemExitInterceptor());
//PHASE 2:脚本管理线程执行
/** "123" 作为 scriptName,登记入内存中;
* 脚本内容里: context 表示脚本上下文对象,它对应于您在执行时传入参数 map,比如后面,scriptEngine.invoke("123", params)
* context.name 执行结果: jack
**/
((ScriptManager)scriptEngine).registerScript("123", "println( context.name ); return 1;");
//PHASE 3:脚本执行线程,实际业务执行调用
Map<String, Object> params = new HashMap<String, Object>();
params.put("name", "jack");
Integer v = scriptEngine.invoke("123", params);
Assert.assertSame(1, v);
//PHASE 4:删除内存中所有的脚本
((ScriptManager)scriptEngine).removeAllScript();
pom中依赖
<dependency>
<groupId>io.github.luyiisme</groupId>
<artifactId>groovy-script-executor</artifactId>
<version>${latest.version}</version>
</dependency>