2011-01-24 8 views
7

아마도 Spring MVC의 전문가에게는 어리석은 질문 일 수 있습니다. 그러나 이것이 내가 후드에서 어떻게 작동 하는지를 모릅니다.Spring MVC와 Guice를 통합 할 수 있습니까?

같은 질문에 대한 또 다른 문구 : Spring MVC 내부의 Spring DI에 대한 의존성이 있습니까?

+0

당신은 [구글 - sitebricks]에서 모습을 찍은 적이 (http://code.google.com/p/google-sitebricks/)? – ColinD

답변

7

IOC 컨테이너없이 Spring MVC를 사용할 수 없다고 확신한다.

예 : Spring MVC의 핵심에는 DispatcherServlet이 있습니다. DispatcherServlet이 다음 방법을 사용하여 자체를 초기화 :

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

그래서 당신이 볼 수있는 모든 긴밀하게 ApplicationContext 인터페이스와 통합됩니다.

그래서 유일한 기회는 Guice 구현 ApplicationContext를 갖는 것이고, 이것은 매우 멀리 가져올 것입니다.

3

Spring IOC 컨테이너를 사용하지 않고 좀 더 원시적 인 Spring MVC 기능을 사용할 수 있어야한다. 이것이 결국 IoC의 모든 부분이다.

많은 MVC 구성 요소가 Guice가 알 수없는 스프링 소유의 라이프 사이클 콜백 (예 : InitializingBeanDisposableBean)을 사용하기 때문에 어려워 질 것입니다. 너 스스로 그걸 처리해야 해.

더 좋은 질문은 입니다. 왜이 작업을 원하십니까? Spring IoC가 사용되지 않으면, Spring MVC는 대부분의 매력을 잃어 버린다. 나는 왜 당신이 다른 하나없이 하나를 사용하고 싶을지 모르겠다.

+0

클라우드에서 Spring을 사용할 여유가 없습니다. 새로운 인스턴스를 시작하는 데 너무 오래 걸립니다. 그리고 프런트 엔드 개발을 위해 MVC가 필요합니다. 또 다른 옵션으로는 Struts, Stripes 및 간단한 MVC 구현이 있습니다. – Roman

+0

Struts2는 Guice와 잘 통합되어 있습니다. Stripes에 대한 좋은 점도 들었습니다. Guice와 얼마나 잘 통합되어 있는지 잘 모르겠습니다. –

관련 문제