在Spring管理Struts 2的应用,HttpServletRequest的对象存储的Action类中的全局变量。之后做一些研究,我发现,在默认情况Struts的Action类是线程安全的,因为它们是实例为每个请求,但在上述情况下,Struts的Action类被配置为Spring bean的无(所以默认情况下,他们都在提这个bean范围单身)。我认为这是一个灾难的原因,所以我正在寻找一个修复,我发现在官方的Struts低于2 Spring集成示例如下:
<bean id="editService" class="org.apache.struts.edit.service.EditServiceInMemory"/>
<bean id="editAction" class="org.apache.struts.edit.action.EditAction" scope="prototype">
<property name="editService" ref="editService" />
</bean>
在此范围设置为原型,但我东西的动作类需要实例化每个HTTP请求应该请求。请告诉我,我的理解是否正确,如果是正确的解决方案,比实例化的请求对象的局部变量等。
我发现在堆栈溢出以下问题,但我想在Struts 2中的条款就知道:Spring Request and Prototype Scope?
这篇文章介绍了相当清楚如何两项工作:Spring Request and Prototype Scope?
我会说,如果你的应用程序只使用简单的动作,它其实并不重要,你使用。如果您使用的过滤器或支柱拦截,并希望保持在请求管道的不同步骤之间的状态,那么你必须使用请求范围豆。否则,再无所谓。
我可能会使用基于原型豆时,根据申请者不是绝对必要的。