私は JDK のSPI メカニズムを他の多くのアプリケーションで問題なく使用してきました。ただし、Grails 内で動作させることはできないようです。
静的イニシャライザ内とクラス コンストラクタ内の両方から通常のコード (以下に示す) を試しましたが、どちらも機能しませんでした。
ServiceLoader loader = ServiceLoader.load(QueryEngine.class);
Iterator<QueryEngine> it = loader.iterator();
イテレータは、実際には実装クラスを反復処理しません。
私も試しました:
ServiceLoader.load(QueryEngine.class, Thread.currentThread().getContextClassLoader());
現在のクラスのクラスローダーを使用する必要がありますが、それも機能しません。
実装クラスをロードするために使用する必要がある他のメカニズムはありますか?