spring webwork struts 集成有关注意事项

spring默认bean的周期是单态的(Singleton),所以struts或webwork的action要配置为非单态,spring1.0配置为singleton="false" spring2.0配置为scope="prototype"

 

第一部分:WebWork2.1与Spring集成

1.先WebWork后Spring(利用webwork2-spring.jar集成),此方法最终不通过,在这里就不说明了。

2.先Spring后WebWork(利用spring-xwork-integration.jar集成)

该方法的执行顺序是先Spring,后WebWork。
即,首先由Spring负责wire所有的依赖关系,再由XWork来执行action。

注意:因为XWork为每个action调用生成一个新的类实例,action在Spring的applicationContext.xml中应该配置为prototype。

1. 配置SpringObjectFactory

(0)下载https://xwork-optional.dev.java.net/files/documents/1475/11992/spring-xwork-integration.jar

(1) 可以在web.xml配置

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<listener>
<listener-class>com.opensymphony.xwork.spring.SpringObjectFactoryListener</listener-class>
</listener>

(2) 或者:在applicationContext.xml配置
<bean id="springObjectFactory"
class="com.opensymphony.xwork.spring.SpringObjectFactory"
init-method="initObjectFactory"/>

以上两种方法任选一种即可

2. 在applicationContext.xml中定义bean
<bean name="some-action" class="fully.qualified.class.name" singleton="false">
<property name="someProperty"><ref bean="someOtherBean"/></property>
</bean>

3. 在xwork.xml中定义action(注意action的class与bean的id相同)

<action name="myAction" class="some-action">
<result name="success">view.jsp</result>
</action>

说明:
该方法与WebWork 2.2中的方法基本相同。

 

第二部分:WebWork2.2与Spring的集成

Spring是WebWork2.2中唯一支持的IoC容器。

1 配置webwork.properties文件,指定spring作为webwork的IoC容器
webwork.objectFactory = spring
(1)默认的autowiring模式是:by name
即如果applicationContext.xml文件中的bean id与xwork.xml文件中的action name相同,就
(2)如果要改为其他模式:
webwork.objectFactory.spring.autoWire = name|type|auto|constructor

2 配置web.xml文件,启动Spring侦听器
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

3 在WEB-INF目录下增加applicationContext.xml文件
例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="autodetect">
<bean id="personManager" class="com.acme.PersonManager"/>
...
</beans>

4 设置由Spring来初始化action
4.1     在Spring的applicationContext.xml文件中配置bean(即action类)
4.2     将xwork.xml中的action的class属性,由class名改为Spring中定义的bean名
例如:
(1)applicationContext.xml中,定义bean id是bar
<beans default-autowire="autodetect">
<bean id="bar" class="com.my.BarClass" singleton="false"/>
...
</beans>
(2)xwork.xml中,action的class="bar",而不是通常的类名
<package name="secure" namespace="/secure" extends="default">
<action name="bar" class="bar">
<result>bar.ftl</result>
</action>
</package>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值