2012-05-11 25 views
9

Cómo inyectar un objeto a un servlet?Cómo usar la inyección de dependencia en servlet?

Quiero decir, que no puedo usar un constructor DI porque los servlets son instanciados por un contenedor de servlets.
Y tampoco veo una buena forma de implementar DI basada en el instalador para un servlet.

¿Debo usar servlet listener? ¿Hay alguna mejores prácticas?

P.S. No tengo ni Spring ni Guice ni ningún otro framework DI, estoy interesado en la inyección de dependencia manual.

+2

Mire esta pregunta. Quizás ayude: http://stackoverflow.com/q/1992132/891391 – yatul

Respuesta

0

Puede consumir servicios que se crean/gestionadas por algunos contenedores COI (primavera, Guice)

Se puede crear una aplicación ContextAware y sacar los granos como y cuando sea necesario a partir de servlets

16

Esto es posible bajo Servlet 3.0. Registra un ServletContextListener que registra programáticamente las instancias del servlet con el método addServlet(String, Servlet) de ServletContext justo antes de que se inicie la aplicación. Dado que está instalando las instancias de Servlet usted mismo, puede darles constructores adecuados e inyectar dependencias.

Creé an example hace un tiempo que ilustra la técnica básica.

+1

+1 No sabía acerca de 'addServlet' – ewernli

+0

@ewernli: IMO, Sun/Oracle no le dio la publicidad que merece. –

+0

Gracias amigo, muy útil – 7zark7

0

Puede usar JNDI, el nombre de Java y la interfaz de directorio, y @Resource para inyectarlo.

Cuestiones relacionadas