Erreur de configuration Guice
-
21-08-2019 - |
Question
Je suis en train d'utiliser Google Guice avec les propriétés @Inject et @Singleton comme suit:
Je:
- un module avec une méthode
configure()
vide. - Une interface IFoo
- Une Foo classe (mise en œuvre IFoo), annoté avec @Singleton, avec un constructeur de paramètre moins annoté avec @Inject. C'est le seul constructeur annoté.
Les classes, le constructeur et l'interface sont publiques, et encore je reçois l'erreur suivante:
Pas de mise en œuvre pour IFoo était liée.
La solution
Vous voulez dire que vous obtenez l'erreur quand vous le faites?
IFoo foo = injector.getInstance(IFoo.class);
Alors il est évident. Si le vide est comment configure()
devrait Guice savoir avec quelle classe pour satisfaire la dépendance pour IFoo
.
Il suffit d'ajouter ceci dans la méthode et il devrait @Singleton
fonctionner. Maintenant Guice sait avec quelle classe pour satisfaire la dépendance.
bind(IFoo.class).to(Foo.class);
Si vous ne voulez pas configurer ce dans le module, vous pouvez annoter l'interface. par exemple.
@ImplementedBy(Foo.class)
public interface IFoo {
...
}
Les annotations ne Guice dit Injector.getInstance()
retourner la même instance pour la classe (le modèle Singleton) chaque fois qu'une demande de la classe se fait via au lieu de créer <=> une nouvelle instance à chaque fois. Mais notez que cela est seulement Singleton par injection plutôt que par Classloader.