2012-05-04 8 views
0

GroovyResourceLoaderを設定すると、必要に応じてGroovyスクリプトのリクエストが得られるようです。私はちょうどそれが特別にクラスの読み込み以外のどこでも使用されているのだろうか? ClassLoaderをラップし、GRLを使用するのではなく* .groovyファイルをロードするだけの利点はありますか?彼らは同じ目的のためにちょうど異なる方法ですか?GroovyResourceLoaderはメインClassLoaderの外部で呼び出されましたか?

答えて

0

GroovyResourceLoader(GRL)はGroovyClassLoader(GCL)によって使用され、少なくともGroovy 1.8以降はGroovyScriptEngine(GSE)を介して間接的に使用されます。しかし、GSEはGCLを通してそれをロードします。

しかし、GRLが行うことは、スクリプトを「見つけて」その場所にURLを返すことです。 GCLが行うことは、GRLによって返されたURLを使ってソースを取得し、それをコンパイルしてクラスを作成することです。

GRLはGCLのバックエンドです。彼らは同じ目的のために異なる方法ではありません。実際、スクリプトコードを実際に実行するためには(プリコンパイルされていない限り)さらに多くのことを行う必要がありますが、「スクリプトソースを取得してコンパイルし、クラスを作成してから実行してください」ということは、行う。私たちのGRL/GCLディスカッションでは、GRLが最初のステップの一部を行い、GCL自身が第3ステップを実行します。ステップ2はGCL内のCompilationUnitによって実行され、最後のステップは実行されます。もちろん、これらのステップを完了する他の方法もありますが、それはこの議論の対象外です。

関連する問題