2

プロジェクトの 1 つで短剣を試していますが、「フィールド インジェクションは、クラスをモジュール定義のエントリ ポイントとして宣言した場合にのみ機能します。」という状況が発生しています。

これは正しい動作ですか?

Messenger.class がエントリ ポイントとして宣言されていない場合、以下の依存関係は Messenger クラスに注入されません。コンストラクター インジェクターは正常に動作しますが、マルチパラメーター コンストラクターを宣言したくありません。

public class Messenger implements NetworkInterfaceListener {
  @Inject public NetworkInterface networkInterface;
  @Inject public MessageFactoryInterface messageFactory;
  @Inject public Bus bus;
  @Inject public Logger log;
  ...
  ...
}
4

1 に答える 1

3

代替手段は2つしかありません。すべてのパラメーターが注入される注入可能なコンストラクターを宣言するか、クラスをダガーモジュールのentryPoints(現在は と呼ばれる)に登録し、デフォルトのコンストラクターを呼び出します(または、実際に「注入」する必要があるときはいつでもクラスの外側)。 .injectsmGraph.inject(this)

于 2013-10-05T17:17:20.780 に答える