Ich habe ein Setup, wo ich mehrere Instanzen einer Klasse binden. Der Unterschied zwischen den Klassen ist ein Eingabeparameter. Die beiden Instanzen werden immer injiziert.Könnte ein Provider zwischen verschiedenen Instanzen wählen
Die Bindungen sieht so aus.
CmsExportAwsWriterSingle cmsExportAwsWriterSingleTranslation = new CmsExportAwsWriterSingle("testing-v1", getCredentials(id, secret));
bind(CmsExportWriter.class)
.annotatedWith(Names.named("config:export.writer.translation"))
.toInstance(cmsExportAwsWriterSingleTranslation);
CmsExportAwsWriterSingle cmsExportAwsWriterSingleReview = new CmsExportAwsWriterSingle("prod-v1", getCredentials(id, secret));
bind(CmsExportWriter.class)
.annotatedWith(Names.named("config:export.writer.review"))
.toInstance(cmsExportAwsWriterSingleReview);
Jetzt habe ich zwei Dienste, die javax.inject Provider verwendet, um mir eine Instanz eines Schreibers zu geben.
Gibt es eine Möglichkeit, dass der Provider mir korrekte Instanzen der Klassen gibt, die ich in das Setup injiziert habe?
Z. B Wenn ich ServiceOne
wollen die Verfasser bekommen namens "config:export.writer.translation"
Und ServiceTwo
"config:export.writer.review"
zu bekommen Oder muss ich den Anbieter abandond und @Named
in der Konstrukteurs der Dienste nutzen.
Nur mit @Named wont mir die Vorteile als Provider tut. Und ich brauche es jedes Mal neue Instanzen der Autoren.
Sieht aus wie der Weg zu gehen ist, die Provider stattdessen zu injizieren.