アシスト インジェクションに関するページでは、コンストラクター内のいくつかのパラメーターに注釈を付けることでアシスト インジェクションを実行する方法について説明していますが、注釈の目的や との違いについては@Assisted
説明していません。その注釈は何らかの形で関連していますか? 違いは何ですか?@AssistedInject
@Inject
2 に答える
@Inject
どちらも、@AssistedInject
使用されている Guice モジュールのインジェクターを使用して呼び出されることになっているコンストラクターに注釈を付けるために使用されます。
唯一の違いは、@Inject
ファクトリに型を作成するためのメソッドが 1 つしかない場合に@AssistedInject
使用されるのに対し、型の複数のコンストラクタに対応する複数のメソッドがファクトリにある場合に使用されることです。Guice が 2 つのケースを区別するのに役立つのは、より詳細です。
http://google-guice.googlecode.com/git/javadoc/com/google/inject/assistedinject/AssistedInject.htmlから
FactoryModuleBuilder と組み合わせて使用すると、@AssistedInject でアノテーションが付けられたコンストラクターは、それぞれ異なるパラメーターを持つ複数のコンストラクターを注入できることを示します。AssistedInject アノテーションを @Inject アノテーションと混在させないでください。補助パラメーターは、ファクトリー・インターフェース内の対応するファクトリー・メソッドの 1 つと正確に一致する必要がありますが、パラメーターは同じ順序である必要はありません。AssistedInject でアノテーションが付けられたコンストラクターは Guice によって作成され、すべての利点 (AOP など) を受け取ります。
廃止された使用法: FactoryProvider と連携して使用される場合、@AssistedInject で注釈が付けられたコンストラクターは「下位互換モード」をトリガーします。アシスト パラメータは、ファクトリ インターフェイス内の対応するファクトリ メソッドの 1 つと正確に一致する必要があり、すべてがファクトリにリストされている順序と同じである必要があります。この下位互換モードでは、AssistedInject でアノテーションが付けられたコンストラクターは Guice によって作成されないため、何のメリットもありません。
コンストラクターのパラメーターは、ファクトリ インターフェイスによって提供され、@Assisted でマークされているか、注入可能である必要があります。