0

MyBatis と Guice によるインジェクションを使用して、Oracle データベースに接続するコマンド ライン インターフェイス アプリケーションを作成しています。

私の質問は、ネストされたクラスの注入です。私のクラス構造はこのように見えます

MyInjector
Main
--Menu1
----Service1
----MenuA
------Service2
--------MenuAB
----------Service1
--Menu2

ここで、ユーザーがログインとパスワードをアプリに入力する必要があります (構成ファイルに入力することはできません)。そのため、Main は MyInjector を初期化し、そこからインジェクター オブジェクトを取得し、それを使用して Menu1 を注入および初期化します。問題は、一度 Menu1 に入ると、MenuA に移動する必要があり、MenuA はサービスを注入する必要があり、これがどれだけ深くなるか誰にもわかりません。

さて、私の最初の考えは、MyInjector をシングルトン クラスにして、必要な場所でそのインスタンスを常に取得し、最初に Main クラスによって作成されたインジェクター フィールドを取得することですが、もっと良い方法があるかどうかちょっと興味があります。

これを行うためのよりGuiceyの方法はありますか?

4

1 に答える 1

0

多分あなたが必要なのは@AssistedInject何ですか?ファクトリ メソッドに引数を渡し、それを使用して最上位オブジェクトのインスタンスを取得します。適切に注釈が付けられた他のすべてのフィールドは自動的に挿入されます。

于 2014-04-09T16:49:59.740 に答える