Ich habe eine Guice-basierte App, die jetzt mehrere Instanzen eines bestimmten Typs benötigt, so dass ich eine benannte Annotation zur Disambiguierung der Abhängigkeiten planen. Allerdings muss eine Abhängigkeit dieses Typs auch abhängig davon variieren, welche ich erhalte.Guice: Variieren des Typs injiziert nach dem wie der Besitzer injiziert wurde
Zur Veranschaulichung läßt ich
@Singleton
public class FooCache {
private final FooCacheListener listener;
@Inject
public FooCache(FooCacheListener listener) {
this.listener = listener;
}
// do stuff
}
sagen haben und kann dann sagen, dass ich ein Bedürfnis nach zwei separaten Instanzen habe, damit ich
@ThatOne FooCache
in einer Klasse und
@ThisOne FooCache
haben könnte
in einem anderen.
Nun sagen wir, dass ich in jedem Fall einen anderen Listener haben möchte (vielleicht schreibt man etwas in eine Datenbank und der andere sendet eine Benachrichtigung über JMS oder an einen verteilten Cache). Wie würde ich das tun? Ich kann nicht sehen, dass ich einen Namen auf den FooCacheListener kleben kann, da ich in einer Situation einen anderen Namen brauchen würde, während ich hier nur einen Platz habe. Der einzige Weg, wie ich das machen kann, ist, FooCache abzulagern, aber das scheint mir eine ziemlich ungeschickte Herangehensweise zu sein.
Prost Matt
irgendwie habe ich das in der docs verpasst, das ist, was ich suche. Vielen Dank. – Matt