这是一个设计层面的问题,我需要关于什么是更好的方法的意见。
我正在开发的应用程序使用Struts2和Spring (用于依赖注入)。每个Action类都调用服务层来执行业务功能。所有数据都保存在模型类中。每个动作都使用模态来保存/编辑数据。这些Modal类被定义为具有getter/setter的类的私有成员。
问题1)我们是否应该将Modal类定义为应用程序上下文中的Beans?目前我还没有。在表单提交时,Struts本身创建实例。在编辑时(当我想在屏幕上显示数据时),我必须显式地创建模式(使用new )。更好的方法是什么?
问题2) aplCntx中操作类的bean是否应该定义为scope=“原型”?Struts本身会不会注意创建操作类的新实例?
发布于 2011-06-30 16:04:35
问题1:
正如Jigar所说,您不需要在应用程序上下文中将操作字段定义为bean,因为在大多数情况下,它们只是在页面和应用程序之间传递数据,所以最有可能的情况是,您从服务层创建了它们,并且只想将它们传递给页面以供呈现,或者它们的数据是从页面提交的,在这种情况下,struts2负责实例化。
问题2:
在struts2中有一个对象工厂,默认情况下它负责操作的创建。您可以对此进行更改,并指定spring来处理操作创建。首先,您必须将spring plugin for struts2添加到类路径中,然后将以下行添加到struts2配置文件中:
<constant name="struts.objectFactory" value="org.apache.struts2.spring.StrutsSpringObjectFactory"/>
然后为您的操作创建bean,如下所示:
<bean id="myActionBean" class="com.my.myAction" scope="prototype">
... required properties ...
</bean>
请记住,您必须将作用域设置为prototype,这就是它对struts2的工作方式。然后在您的struts配置文件中:
<action name="myaAction" class="myActionBean">
... required result mapping ...
</action>
发布于 2011-06-30 09:46:24
1)我们应该将Modal类定义为应用程序上下文中的Beans吗?目前我还没有。在表单提交时,Struts本身创建实例。在编辑时(当我想在屏幕上显示数据时),我必须显式地创建模式(使用new )。更好的方法是什么?
不是的。您不应该在spring上下文中定义modal,它们应该只是简单的POJO
https://stackoverflow.com/questions/6532884
复制相似问题