特定のタイプの複数のインスタンスを必要とする Guice ベースのアプリがあるため、依存関係を明確にするために名前付き注釈を使用する予定です。ただし、このタイプの依存関係も、取得する依存関係によって異なる必要があります。
説明するために、私が持っているとしましょう
@Singleton
public class FooCache {
private final FooCacheListener listener;
@Inject
public FooCache(FooCacheListener listener) {
this.listener = listener;
}
// do stuff
}
次に、2 つの個別のインスタンスが必要であるとしましょう。
@ThatOne FooCache
1つのクラスで
@ThisOne FooCache
別の。
ここで、それぞれの場合に異なるリスナーが必要だとしましょう (1 つはデータベースに何かを書き込み、もう 1 つは JMS 経由または分散キャッシュに通知を送信する場合があります)。どうすればいいですか?ここには 1 つの場所しかないのに、ある状況では別の名前が必要になるため、FooCacheListener に名前を付けることはできません。これを行う唯一の方法は、FooCache をサブクラス化することですが、それは私には非常に不器用なアプローチのようです。
乾杯マット