我有一个自定义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进行静态编译吗?
谢谢!