SpringBoot项目中使用Groovy脚本的示例代码
目录
- 1. 引入依赖
- 2. 使用脚本引擎运行groovy脚本
- 3.思考
- SpringBoot+Groovy运行动态脚本
- GroovyClassLoader方式
- GroovyScriptEngine方式
- 变量绑定
1. 引入依赖
org.codehaus.groovy groovy2.5.5 org.codehaus.groovy groovy-jsr2232.5.5
2. 使用脚本引擎运行groovy脚本
ScriptEngineManager factory = new ScriptEngineManager(); ScriptEngine engine = factory.getEngineByName("groovy"); // 变量Bindings bindings = engine.createBindings(); bindings.put("value", 10); // groovy脚本String scriptStr = "if (value =https://www.it610.com/article/= null) { return false}/n if (value <= 0) {return false} else { return true}"; // 执行脚本Object res = engine.eval(scriptStr, bindings);
【SpringBoot项目中使用Groovy脚本的示例代码】在实际项目中,可以把ScriptEngine engine在项目初始化的时候生成,不需要每次调用都再去生成一个。
通过debug知道,在ScriptEngine内部有个map会缓存曾经执行过的脚本,所以性能方面也不需要担心。
Groovy语法参考
3.思考
使用这种方式的好处是什么?
- 方便:有新的表需要检查字段的时候,加配置就可以,减少工作量;简单的规则可以直接通过Groovy脚本实现,规则改变时可以很快的修改。
- 成本低:Groovy语法和Java很像,不需要付出太大的学习成本。
这不是个复杂的需求,现阶段没必要引入规则引擎也可以很好的完成需求。引入规则引擎会增加更多成本,但效果是差不多的。
SpringBoot+Groovy运行动态脚本
GroovyClassLoader方式
Java使用GroovyClassLoader动态加载Groovy脚本,调用脚本中的方法
在java中调用test.groovy脚本文件
ClassLoader parent = this.getClass().getClassLoader(); GroovyClassLoader loader = new GroovyClassLoader(parent); Class groovyClass = loader.parseClass(new File("src/main/java/com/example/demo/groovyscript/test.groovy")); GroovyObject groovyObject= (GroovyObject)groovyClass.newInstance(); String result = (String) groovyObject.invokeMethod("test", id);
Groovy
test.groovy脚本文件
package com.example.demo.groovyscriptclass MyTest{static String test(String id){return "test1 id:"+ id; }}
GroovyScriptEngine方式
java使用GroovyScriptEngine脚本引擎加载Groovy脚本
方法调用
在java中调用test.groovy脚本文件
GroovyScriptEngine engine = new GroovyScriptEngine("src/main/java/com/example/demo/groovyscript"); Script script = engine.createScript("test.groovy", new Binding()); return (String) script.invokeMethod("test",id);
Groovy
test.groovy脚本文件
package com.example.demo.groovyscript
def test(id){return "test2 id:"+ id; }
变量绑定
在java中调用test.groovy脚本文件
GroovyScriptEngine engine = new GroovyScriptEngine("src/main/java/com/example/demo/groovyscript"); Binding binding = new Binding(); binding.setVariable("id",id); engine.run("test.groovy",binding); return binding.getVariable("output").toString();
Groovy
test.groovy脚本文件
package com.example.demo.groovyscriptoutput = "test3 id: ${id}"
到此这篇关于SpringBoot项目中使用Groovy脚本的示例代码的文章就介绍到这了,更多相关SpringBoot使用Groovy脚本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 赢在人生六项精进二阶Day3复盘
- Activiti(一)SpringBoot2集成Activiti6
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- 六项精进20180530
- 2020-12(完成事项)
- 17|17 关山松 第二课作业#公众号项目# D20
- RxJava|RxJava 在Android项目中的使用(一)
- Hacking|Hacking with iOS: SwiftUI Edition - SnowSeeker 项目(一)
- 靠QQ月入上万灰色暴利偏门的项目