Comment injecter un objet à un servlet? p>
Je veux dire, que je ne peux pas utiliser de constructeur di car les servlets sont instanciés par un conteneur de servlets.
Et je ne vois pas non plus une bonne façon de mettre en œuvre une dialogue DI pour un servlet. p>
devrais-je utiliser un auditeur de servlet? Y a-t-il des meilleures pratiques? P>
P.s. Je n'ai ni printemps ni guice ni aucun autre DI Cadre, je suis intéressé par une injection manuelle de dépendance. P>
3 Réponses :
Vous pouvez consommer des services créés / gérés par certains conteneurs de COI (printemps, guice) p>
Vous pouvez créer une implémentation contextaware et retirer les haricots comme si nécessaire auprès de servlet p>
L'utilisation d'un ressort de cette façon n'est pas une injection de dépendance, mais utilise plutôt efficacement un localisateur de services, qui est considéré comme un anticipé
Ceci est possible sous Servlet 3.0. Vous enregistrez un servletContextListener qui enregistre de manière programmée des instances de servlet avec le méthode de servleContext juste avant que l'application ne commence. Puisque vous instantiez vous-même des instances de servlet vous-même, vous pouvez leur donner des constructeurs appropriés et injecter des dépendances. P>
J'ai créé Un exemple Il y a un moment qui illustre la technique de base. P>
Vous pouvez utiliser JNDI, l'interface Java Naming and Directory, et @Resource code> pour l'injecter. p>
Corrigez-moi si je me trompe, mais n'est pas JNDI une mise en œuvre du localisateur de services, pas d'injection de dépendance, et donc soumise aux critiques habituelles de localisateur de services comme anticipatifs ?
Regardez cette question. Peut-être que cela aidera: Stackoverflow.com/q/1992132/891391