是否可以将Spring MVC与Guice集成?

时间:2011-01-24 11:40:59

标签: java spring spring-mvc integration guice

对于Spring MVC的专家来说,这可能是一个愚蠢的问题,但我不知道它是如何工作的,这就是我问的原因。

针对同一问题的另一个措辞:Spring MVC中是否存在对Spring DI的依赖?

3 个答案:

答案 0 :(得分: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界面紧密集成。

所以你唯一的机会就是拥有一个ApplicationContext的Guice实现,我想这将是非常牵强的。

答案 1 :(得分:3)

应该可以在不使用Spring IOC容器的情况下使用一些更原始的Spring MVC功能 - 毕竟,这是IoC的全部要点。

但是,由于许多Spring MVC组件使用Guice不会知道的Spring专有生命周期回调(例如InitializingBeanDisposableBean),因此很难实现。你必须自己处理这些。

更好的问题是为什么你想要这样做?如果没有使用Spring IoC,Spring MVC将失去其大部分吸引力。我不明白你为什么不想使用另一个。

答案 2 :(得分:1)