2011-04-04 7 views
5

Estoy buscando cómo puedo obtener un Inyector usando Guice en una aplicación web. Ya encontré una solución con ServletContext, pero esta solución no me satisface porque rompe la arquitectura de capa de la aplicación. No estoy de acuerdo con el uso de ServletContext en las capas más profundas de la aplicación. ¿Conoces otra manera?Obtenga un Inyector de Guice en una aplicación web

Una solución obvia sería crear mi propio singleton para alojar el Inyector, pero parece ser que Guice debería ofrecer alguna forma lista para hacerlo. Simplemente no puedo encontrar uno todavía ...

Respuesta

6

Suponiendo que está utilizando Guice Servlet y suponiendo que la clase en la que desea que se inyecte el inyector se inyecte solo, simplemente inyecte el inyector.

1

El ciclo de vida de la aplicación está completamente controlado por el contenedor de servlets, por lo que el uso de un detector de contexto para iniciar el proceso de inicialización de su aplicación es el resultado lógico de ese hecho. Por lo tanto, no diría que ese hecho en sí mismo no está rompiendo la arquitectura en capas, al igual que una actividad de inicio de solicitud web en la capa del modelo no rompe la arquitectura en capas.

Pero para no romper la arquitectura en capas, el oyente de contexto de servlet no debe involucrarse con los detalles de las otras capas, solo debe iniciar la inicialización. Por lo tanto, todos los códigos relacionados con Guice, por ejemplo, una fábrica de inyectores Guice, deberían ubicarse en su propia capa. El rol del oyente de contexto debe limitarse a una llamada que inicie la inicialización (por ejemplo: MyGuiceFactory.init() o MyApp.init()).

Cuestiones relacionadas