【问题标题】:Is it possible to integrate Spring MVC with Guice?是否可以将 Spring MVC 与 Guice 集成?
【发布时间】:2011-06-14 11:17:27
【问题描述】:

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

同一个问题的另一种说法:Spring MVC 中是否存在对 Spring DI 的依赖?

【问题讨论】:

标签: java spring spring-mvc integration guice


【解决方案1】:

我很确定没有 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 实现,我猜这将是非常牵强的。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 我无法在云中使用 Spring - 启动新实例需要很长时间。我需要一些 MVC 来进行前端开发。另一个选择是 Struts、Stripes 和我自己的简单 MVC 实现。
    • Struts2 与 Guice 完美集成。我也听说过关于 Stripes 的一些好消息(不确定它与 Guice 的集成情况如何)。
    【解决方案3】:

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 2013-04-07
      • 2015-05-13
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      • 2015-10-23
      • 2015-11-22
      • 2023-03-12
      相关资源
      最近更新 更多