我有一个自定义 Java 库,它实现了在 Groovy 中实现并通过配置文件提供的业务规则。我使用 GroovyClassLoader 编译业务规则并返回所需的类,如下所示:
public class GroovyScriptClassLoader {
private GroovyClassLoader classLoader = null;
public GroovyScriptClassLoader() {
this.classLoader = new GroovyClassLoader(Thread.currentThread().getContextClassLoader());
}
public Rule getRule(final String ruleName, final String ruleSource) {
Class<?> ruleClazz = parseScript(ruleName, ruleSource);
}
private Class<?> parseScript(final String ruleName, final String ruleSource) {
GroovyCodeSource codeSource = new GroovyCodeSource(ruleSource, ruleName, GroovyShell.DEFAULT_CODE_BASE);
codeSource.setCachable(true);
return classLoader.parseClass(codeSource);
}
}
我的配置文件中嵌入的业务规则在类级别使用@CompileStatic 注释进行了注释。
如何让我的 GroovyClassLoader 配置为进行静态编译?
我猜它涉及使用 CompilerConfiguration 创建 GroovyClassLoader(即 GroovyClassLoader(ClassLoader loader, CompilerConfiguration config),但我很难找到配置 CompilerConfiguration 来完成此操作的特定信息。
谁能提供一个关于如何配置 GroovyClassLoader 进行静态编译的示例?
谢谢!