1. 引入依赖
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy</artifactId>
<version>2.5.5</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-jsr223</artifactId>
<version>2.5.5</version>
</dependency>
2. 使用脚本引擎运行groovy脚本
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("groovy");
// 变量
Bindings bindings = engine.createBindings();
bindings.put("value", 10);
// groovy脚本
String scriptStr = "if (value == null) { return false}\n if (value <= 0) {return false} else { return true}";
// 执行脚本
Object res = engine.eval(scriptStr, bindings);
在实际项目中,可以把ScriptEngine engine在项目初始化的时候生成,不需要每次调用都再去生成一个。
通过debug知道,在ScriptEngine内部有个map会缓存曾经执行过的脚本,所以性能方面也不需要担心。
3.思考
- 使用这种方式的好处是什么?
- 为什么不使用规则引擎?