2011-01-24 17 views
7

Probablemente sea una pregunta tonta para los expertos en Spring MVC, pero no sé cómo funciona bajo el capó, es por eso que pregunto.¿Es posible integrar Spring MVC con Guice?

Otra formulación para la misma pregunta: ¿hay alguna dependencia de Spring DI dentro de Spring MVC?

+0

¿Ha echado un vistazo a [Google-sitebricks] (http://code.google.com/p/google-sitebricks/)? – ColinD

Respuesta

7

Estoy bastante seguro de que no es posible usar Spring MVC sin el contenedor IOC.

Por ejemplo: en el corazón de Spring MVC se encuentra el DispatcherServlet. DispatcherServlet inicializa el uso de estos métodos:

/** 
* This implementation calls {@link #initStrategies}. 
*/ 
@Override 
protected void onRefresh(ApplicationContext context) { 
    initStrategies(context); 
} 

/** 
* Initialize the strategy objects that this servlet uses. 
* <p>May be overridden in subclasses in order to initialize 
    * further strategy objects. 
*/ 
protected void initStrategies(ApplicationContext context) { 
    initMultipartResolver(context); 
    initLocaleResolver(context); 
    initThemeResolver(context); 
    initHandlerMappings(context); 
    initHandlerAdapters(context); 
    initHandlerExceptionResolvers(context); 
    initRequestToViewNameTranslator(context); 
    initViewResolvers(context); 
} 

para que pueda ver, todo está estrechamente integrado con la interfaz ApplicationContext.

Así que su única posibilidad sería tener una implementación de Guice de ApplicationContext, y eso sería muy exagerado, supongo.

3

Debería ser posible utilizar algunas de las funciones más primitivas de Spring MVC sin utilizar el contenedor Spring IOC; este es, después de todo, el objetivo de IoC.

Va a ser difícil, ya que muchos de los componentes de Spring MVC utilizan las devoluciones de llamada de ciclo de vida propias de Spring (por ejemplo, InitializingBean y DisposableBean) que Guice no conocerá. Tendría que manejarlos usted mismo.

Una pregunta mejor, sin embargo, es ¿por qué quieres hacer esto? Sin Spring IoC utilizado, Spring MVC pierde la mayor parte de su atractivo. No veo por qué querrías usar uno sin el otro.

+0

No puedo permitirme usar Spring en la nube: lleva demasiado tiempo iniciar una nueva instancia. Y necesito algo de MVC para el desarrollo del front-end. Otra opción es Struts, Stripes y mi propia implementación simple de MVC. – Roman

+0

Struts2 se integra muy bien con Guice. También escuché algunas cosas buenas sobre Stripes (no estoy seguro de qué tan bien se integre con Guice). –