Guice - Injecter de la dépendance dans une classe statique méthodes d'aide
Je suis encore nouveau pour Guice et n'avez pas utilisé les DI cadres avant. Après avoir lu le wiki officiel et de nombreux autres documents, je ne suis toujours pas en mesure d'envelopper ma tête autour d'elle complètement.
Dans mon cas particulier, je veux écrire un EL taglib fonction qui utilise une autre (pour être injecté) de la classe. Comme tous les taglib fonctions doivent être déclarées comme statique, je ne peux pas juste @Inject ma dépendance par le constructeur ou setter. J'ai pensé à l'aide de la requestStaticInjection() la méthode décrite dans http://code.google.com/p/google-guice/wiki/Injections#Static_Injections mais je n'arrive pas à le faire fonctionner et n'ont pas été en mesure de trouver un bon tutoriel.
Merci d'avance pour toute aide,
Arman
OriginalL'auteur Arman | 2013-08-26
Vous devez vous connecter pour publier un commentaire.
Il n'est pas beaucoup plus clair que ce que Guice de la documentation, mais voici un test unitaire qui montre un exemple de comment vous pouvez utiliser statique injection:
Je ne suis pas sûr de ce que tu veux dire par "les autres injecteurs". Si vous liez
Injected
comme@Singleton
alors que seule instance sera utilisé lors de l'injection (y compris statique injection) pour l'ensemble du module.Selon le Guice documentation, normalement vous devriez créer un Injecteur à l'intérieur d'un projet web à l'intérieur d'un ServletContextListener l'extension de GuiceServletContextListener. Donc, si je créer un autre Injecteur à l'intérieur de certaines classe, sera Guice injecter le même @Singleton classe que le "ServletContextListener-Injecteur"?
Je ne suis pas sûr de savoir pourquoi vous auriez besoin de créer que d'autres de l'injecteur. Est-il une raison quelconque, vous ne souhaitez pas installer ce module lors de la configuration de votre injecteur dans le
GuiceServletContextListener
?Je ne configurer l'injecteur dans le
GuiceServletContextListener
. Mais comment puis-je obtenir l'accès à l'injecteur à partir d'une autre classe dans une méthode statique? J'ai résolu mon problème en déclarant que l'injecteur dansGuiceServletContextListener
commepublic static final
et d'accéder simplement à elle de cette façon. Mais je suppose que ce n'est guère du style :/OriginalL'auteur condit