配置GrrovyClassLoader以支持@CompileStatic注释

时间:2016-06-28 17:58:18

标签: java groovy groovyclassloader compile-static

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

谢谢!

0 个答案:

没有答案