如何缓存由 Groovy 脚本引擎生成的编译类?

问题描述 投票:0回答:1

我正在从 scala 动态运行 groovy 脚本,但是在调用 Groovy 脚本引擎的 loadScriptByName 方法时需要一些时间来编译 groovy 脚本。

自上次运行应用程序以来,从我的应用程序加载和编译的大多数 groovy 脚本都没有更改,因此我想没有必要每次都编译它们。

是否有任何方法可以存储已编译的 groovy 脚本并在没有任何更改的情况下从我的应用程序运行它们?我知道如果您在同一个 groovy 脚本上调用 loadScriptBynName 方法两次或更多次,groovy 脚本引擎会缓存已编译的脚本,但当我关闭应用程序时,这些缓存就会消失。也许它在内存中存储缓存的脚本?

groovy
1个回答
3
投票

用途:

String script = ""     // some script
string scriptName = "" // unique script name

GroovyClassLoader groovyClassLoader = GroovyClassLoader() 
GroovyCodeSource gcs = new GroovyCodeSource(script, scriptName, "/app/script");
Class<?> executableClass = groovyClassLoader.parseClass(gcs, true);
© www.soinside.com 2019 - 2024. All rights reserved.