【发布时间】:2011-01-31 19:00:50
【问题描述】:
我们正在将我们的 Web 应用程序从 Spring 2.5 迁移到 Spring 3.0.5。看起来所有控制器类(org.springframework.web.servlet.mvc 包中的类:BaseCommandController、AbstractCommandController、SimpleFormController 等)已被弃用。我们在应用程序中大量使用了这些类。这些类已被 @Controller 注解取代。
我有几个关于 Spring 3.0.x 控制器配置的问题...
- 我们使用以下 XML 在 Spring 2.5 中创建了一个 Controller bean。如果使用
来创建 Controller bean,那么我如何连接依赖项?如果可能的话,我想避免自动接线。
<bean id="photosetViewController" class="com.xyz.web.PhotosetViewController"
p:photosetManager-ref="photosetManager"
p:photoManager-ref="photoManager" />
- 我们创建了 3 个拦截器。我们使用 SimpleUrlHandlerMapping 将这些拦截器映射到不同的请求 URL,并将 URL 映射到控制器。我们如何在 Spring 3.0.x 中实现相同的目标?
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="alwaysUseFullPath" value="true" />
<property name="interceptors">
<list>
<ref bean="httpRedirectInterceptor"/>
<ref bean="loginInterceptor"/>
</list>
</property>
<property name="mappings">
<value>
/abc.html=abcLookupController
/photoupload.html=photoUploadController
</value>
</property>
</bean>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="alwaysUseFullPath" value="true" />
<property name="interceptors">
<list>
<ref bean="httpRedirectInterceptor"/>
<ref bean="loginInterceptor"/>
<ref bean="userMenuInterceptor" />
</list>
</property>
<property name="mappings">
<value>
/index.html=homepageController
/success.html=simpleController
</value>
</property>
</bean>
- 对于 SimpleFormController,我们使用了不同的方法,例如 initBinder、referenceData、formBackingObject。我们还使用了命令对象和验证类。我们如何在 Spring 3.0.x 中实现相同的目标?
<bean id="photosetAddController" class="com.xyz.web.PhotosetAddController"
p:photosetManager-ref="photosetManager"
p:photosetTypeManager-ref="photosetTypeManager"
p:stateManager-ref="stateManager" >
<property name="validator">
<bean class="com.xyz.form.PhotosetAddValidator" />
</property>
<property name="formView" value="photosetadd" />
<property name="successView" value="redirect:/photoset" />
</bean>
非常感谢任何指针。
【问题讨论】:
-
请分别提出单独的问题。当然,它们是相关的,但也可以更好地独立回答。
-
以上所有内容在 Spring 3 中都可以正常工作(已弃用!= 已删除)。这只是意味着现在有一种更好的方法来做这些事情,但你不需要一次性完成所有事情。
-
skaffman,我听到 Arjen Poutsma(SpringSource 开发人员)的演讲,在未来的版本中将删除不推荐使用的功能。虽然我知道我的应用会在 Spring 3.0 中得到支持,但我觉得我们应该现在而不是以后进行这些更改。
标签: spring spring-mvc