2011-01-24 13 views
7

Probabilmente è una domanda stupida per gli esperti di Spring MVC ma non so come funzioni sotto il cofano è per questo che chiedo.È possibile integrare Spring MVC con Guice?

Un'altra formulazione per la stessa domanda: ci sono delle dipendenze su Spring ID in Spring MVC?

+0

Avete dato un'occhiata a [Google-sitebricks] (http://code.google.com/p/google-sitebricks/)? – ColinD

risposta

7

Sono quasi sicuro che non è possibile utilizzare Spring MVC senza il contenitore IOC.

Ad esempio: nel cuore di Spring MVC si trova lo DispatcherServlet. DispatcherServlet si inizializza utilizzando questi metodi:

/** 
* 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); 
} 

Così si può vedere, tutto è strettamente integrato con l'interfaccia ApplicationContext.

Quindi la tua unica possibilità sarebbe avere un'implementazione Guice di ApplicationContext, e questo sarebbe molto inverosimile, immagino.

3

Dovrebbe essere possibile utilizzare alcune delle funzionalità primarie MVC di Spring senza utilizzare il contenitore di IOC di Spring - questo è, dopotutto, l'intero punto di IoC.

Sarà difficile, tuttavia, dal momento che molti componenti di Spring MVC utilizzano i callback del ciclo di vita proprietario di Spring (ad esempio InitializingBean e DisposableBean) di cui Guice non è a conoscenza. Dovresti gestirli da soli.

Una domanda migliore, tuttavia, è perché vuoi fare questo? Senza l'utilizzo di Spring IoC, Spring MVC perde la maggior parte del suo appeal. Non vedo perché vorresti usarne uno senza l'altro.

+0

Non posso permettermi l'uso di Spring in the cloud: impiega troppo tempo per avviare una nuova istanza. E ho bisogno di alcuni MVC per lo sviluppo front-end. Altre opzioni sono Struts, Stripes e la mia semplice implementazione MVC. – Roman

+0

Struts2 si integra bene con Guice. Ho sentito anche alcune cose positive su Stripes (non so quanto bene si integri con Guice). –

Problemi correlati