ho il seguente codice utilizzando le associazioni Guice:Guice: Legatura diversi oggetti con diverse dipendenze
public class MyApplication {
public static void main(String[] args) {
Guice.createInjector(new AbstractModule() {
@Override
protected void configure() {
bind(Foo.class).annotatedWith(Names.named("first")).toInstance(new Foo("firstFoo"));
bind(Foo.class).annotatedWith(Names.named("second")).toInstance(new Foo("secondFoo"));
bind(Bar.class).to(BarImpl.class);
bind(MyApplication.class).asEagerSingleton();
}
});
}
private @Named("first") Bar first;
private @Named("second") Bar second;
static @Value class Foo { String name; }
static interface Bar {}
static class BarImpl implements Bar {
@Inject @Named Foo foo;
}
}
Sto cercando di ottenere un oggetto Bar
per entrambi denominati Foo
s iniettati nella mia applicazione. Fondamentalmente, dovrebbe in qualche modo collegare lo a Foo
con quello su Bar
. Ho provato diverse soluzioni, dal mettere @Named
su tutto per scrivere una personalizzata Provider
. Quest'ultimo non ha funzionato perché non ho accesso al valore dell'annotazione @Named
all'interno del provider. Penso che la soluzione sia da qualche parte nella riga bind(Bar.class).to(BarImpl.class);
, dicendogli di ricordare il valore dell'annotazione @Named
.
La mia domanda è, è possibile, e se sì, come?
Grazie, sembra promettente. Ci proverò lunedì. – Jorn
Sì, questo ha risolto il mio problema. Grazie ancora! – Jorn
Prego! –