Groovy に実装され、構成ファイルを介して提供されるビジネス ルールを実装するカスタム Java ライブラリがあります。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(ClassLoader loader, CompilerConfiguration config)) を使用して GroovyClassLoader を作成する必要があると思いますが、これを達成するために CompilerConfiguration を構成するための特定の情報を見つけるのが困難です。
GroovyClassLoader を静的にコンパイルするように構成する方法の例を誰か提供できますか?
ありがとう!