Guice injectMembers méthode
Je comprends les avantages de l'utilisation du constructeur d'injection sur l'injection par mutateur mais dans certains cas j'ai coller avec le setter-injection. Ma question est comment faire pour injecter des membres de toutes les setter à base d'injection de classes à l'aide d'un injecteur.injectMembers() la méthode?
//I am calling this method in init method of my application
private static final Injector injector = Guice.createInjector(new A(), new B());
//Injecting dependencies using setters of all classes bound in modules A and B
injector.injectAllMembers()??
Pourriez-vous nous donner un exemple de code de certaing cas d'utilisation?
Guice déjà fait. Êtes-vous réellement avoir un problème?
Guice déjà fait. Êtes-vous réellement avoir un problème?
OriginalL'auteur Abidi | 2011-02-25
Vous devez vous connecter pour publier un commentaire.
Pourquoi avez-vous besoin d'injecter des dépendances manuellement?
Guice injecte de dépendances dans les champs et les méthodes automatiquement.
Utilisation:
Guice documentation:
Vous avez besoin d'injecter des membres par vous-même dans un créé manuellement exemple comme ceci:
Ou vous pouvez utiliser quelque chose comme ça:
Dans tous les cas, les poseurs de YourClass doivent être annotées avec @Inject.
Voir le code dans la mise à jour de réponse. Espère que ça vous aidera.
Il est recommandé d'injecter un
MembersInjector<YourClass>
quand vous voulez pour ce faire, plutôt que l'ensembleInjector
.Ce ne serait que le masque de l'Injecteur, mais il serais toujours la même instance, à droite? Et: puisque vous avez déjà de l'injecteur à la main, pourquoi ne pas simly appel getInstance() à la place de de nouveaux et injectMembers?
Si vous utilisez un Fournisseur de Guice à obtenir et retourner le cas, alors Guice est automatiquement essayez d'injecter les membres (et les champs, le cas échéant) de l'instance renvoyée par votre Fournisseur. Mais notez que l'injection par mutateur fonctionne que pour les méthodes annotées avec @Inject.
OriginalL'auteur Pavel