je le code suivant à l'aide des liaisons Guice:Guice: Reliure plusieurs objets avec dépendances différentes
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;
}
}
J'essaie d'obtenir un objet Bar
pour les deux nommés Foo
s injectés dans ma demande. Fondamentalement, il devrait en quelque sorte connecter le @Named
sur Foo
avec celui sur Bar
. J'ai essayé plusieurs solutions, de mettre @Named
sur tout à l'écriture d'un Provider
personnalisé. Ce dernier n'a pas fonctionné car je n'ai pas accès à la valeur de l'annotation @Named
dans le fournisseur. Je pense que la solution est quelque part dans la ligne bind(Bar.class).to(BarImpl.class);
, lui disant de se souvenir de la valeur de l'annotation @Named
.
Ma question est, est-ce possible du tout, et si oui, comment?
Merci, cela semble prometteur. Je vais essayer le lundi. – Jorn
Oui, cela a résolu mon problème. Merci encore! – Jorn
De rien! –