Spring和Struts 2集成

时间:2011-06-30 09:43:57

标签: spring struts2

这是一个设计层面的问题,我需要就什么是更好的方法提出意见。

我正在使用的应用程序使用Struts 2和Spring(用于依赖注入)。 每个Action类都调用Service Layer来执行业务功能。所有数据都保存在Model类中。每个操作都使用模态来保存/编辑数据。这些Modal类被定义为具有getter / setter的类的私有成员。

问题1)我们是否应该在应用程序上下文中将模态类定义为Bean?目前我还没有。在表单提交上,Struts本身创建了实例。在编辑时(当我想在屏幕上显示数据时)我必须明确地创建模态(使用新的)。什么是更好的方法。

问题2)aplCntx中Action Classes的bean是否应该定义为scope =“prototype”? Struts自己不会注意创建动作类的新实例吗?

2 个答案:

答案 0 :(得分:3)

问题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>

请记住,您必须将范围设置为原型,以及它对struts2的工作方式。然后在你的struts配置文件中:

<action name="myaAction" class="myActionBean">
    ... required result mapping ...
</action>

答案 1 :(得分:1)

  

1)我们应该在应用程序上下文中将Modal类定义为Beans吗?目前我还没有。在表单提交上,Struts本身创建了实例。在编辑时(当我想在屏幕上显示数据时)我必须明确地创建模态(使用新的)。什么是更好的方法。

没有。你不应该在spring-context中定义modal,它们应该只是简单的POJO