0

Spring を利用したアプリがあり、groovy を統合したいと考えています。具体的には、一連の抽象メソッド定義を持つ 1 つの抽象 Java クラスと、autowired で注入された 1 つのリポジトリがあります。

このクラスは、いくつかの最終的な groovy 外部クラス (クライアントごとに 1 つ) によって実装する必要があります。

現時点では、Java で Groovy クラスを次のように呼び出しています。

final Class parsedClass = groovyClassLoader.parseClass(groovyFile);
final GroovyObject groovyObject = (GroovyObject) parsedClass.newInstance();
final Object response = groovyObject.invokeMethod(methodName, methodParameters);

問題は、各 Groovy 外部クラスでリポジトリ変数を自動配線する必要があるが、現在は null であることです。

実行時に作成するときに、inyected リポジトリ変数を取得するように Groovy クラスに通知するにはどうすればよいですか?

ありがとう!

編集

Y は、このように groovyObjectObject の setProperty メソッドを使用して解決しました。

groovyObject.setProperty("myRepository", myRepositoryImpl);
4

2 に答える 2

1

ここのインスタンスはSpringによって作成されたものではないため、SpringgroovyObjectがあなたが持っているリポジトリのインスタンスを自動的に設定できるとは思いません。

ただし、autowireリポジトリを生成するクラスに入れることができる場合groovyObjectは、呼び出しでリポジトリを手動で挿入できnewInstanceます。

parsedClass.newInstance(repository:your_autowired_repo_ref)

于 2014-02-04T18:59:08.633 に答える
0

この方法で groovyObjectObject の setProperty メソッドを使用して解決しました。

groovyObject.setProperty("myRepository", myRepositoryImpl);
于 2014-02-04T21:34:12.230 に答える