GroovyResourceLoaderをセットアップしましたが、必要に応じてgroovyスクリプトのリクエストを受け取るようです。クラスの読み込み以外の場所で特別に使用されているのだろうか?GRLを使用するのではなく、ClassLoaderをラップして* .groovyファイルをロードするだけの利点はありますか?それらは同じ目的のための異なる方法ですか?
1 に答える
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 によって行われ、最後のステップは自分で行う必要があります。もちろん、これらの手順を完了する他の方法もありますが、それはこの説明の範囲外です。