如果你在xwork.xml 里面定义的某个action有一个字段叫userManager,那么在运行时刻就会自动被设置为Spring的配置文件里定义的Bean.
也可以自己定义一个Interceptor
里面用 applicationContext.getBeanFactory().autowireBeanProperties(bean, AutowireCapableBeanFactory.AUTOWIRE_BY_NAME, false);
也可以达到上面一样的效果
补充:webwork2.2可以在webwork.properties里面进行配置了
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>
posted on 2008-09-22 00:09
苏坦纳 阅读(190)
评论(0) 编辑 收藏 所属分类:
java