【发布时间】:2011-06-14 11:17:27
【问题描述】:
对于 Spring MVC 的专家来说,这可能是一个愚蠢的问题,但我不知道它是如何工作的,这就是我问的原因。
同一个问题的另一种说法:Spring MVC 中是否存在对 Spring DI 的依赖?
【问题讨论】:
-
你看过google-sitebricks吗?
标签: java spring spring-mvc integration guice
对于 Spring MVC 的专家来说,这可能是一个愚蠢的问题,但我不知道它是如何工作的,这就是我问的原因。
同一个问题的另一种说法:Spring MVC 中是否存在对 Spring DI 的依赖?
【问题讨论】:
标签: java spring spring-mvc integration guice
我很确定没有 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 实现,我猜这将是非常牵强的。
【讨论】:
应该可以在不使用 Spring IOC 容器的情况下使用一些更原始的 Spring MVC 功能 - 毕竟,这就是 IoC 的全部意义所在。
但这会很困难,因为许多 Spring MVC 组件使用 Guice 不知道的 Spring 专有的生命周期回调(例如 InitializingBean 和 DisposableBean)。你必须自己处理这些。
不过,一个更好的问题是,为什么你想要这样做?如果不使用 Spring IoC,Spring MVC 就失去了大部分吸引力。我不明白你为什么要使用一个而没有另一个。
【讨论】:
【讨论】: