WebWork2.2中结合Spring
本文大部分内容来自http://wiki.opensymphony.com/display/WW/Spring,本文主要是把内容翻译过来,并加上一些补充,请以英文版本为准.
在WebWork2.2中,spring已经作为IOC的支持基础,原有的Spring结合的方法已经分别溶入到XWork和WebWork的源码中.
当然原有的组合办法依然有效,有可能一些类改了包名和类名,但是使用方法类似.
在WebWork2.2中,还有一种新的办法来结合Spring.
开启Spring组合
在WebWork中开启Spring支持是非常简单的,把最新版本的Spring的jar放到你的classpath中,然后在webwork.properties里面设置如下选项:
- webwork.objectFactory = spring
webwork.objectFactory = spring
此时使用的类是: com.opensymphony.webwork.spring.WebWorkSpringObjectFactory,也可以指定为其他SpringObjectFactory.
这时所有对象都首先来用Spring来创建.如果Spring没有创建这些对象,WebWork会自己创建这些对象. 然后,你需要在web.xml里面设置Spring的listener:
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
Spring配置示例
这时,你可以添加一个标准的Spring配置文件: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>
<?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>
使用Spring初始化Action
一般来说,你在xwork.xml里面为每个Action指定类. 这意味着WebWork首先会创建这个Action,然后按照指定的缺省的自动装配策略来设定依赖的属性. 然而,有时你可能想要Spring来完全管理Bean.这是有实际意义的,例如,你如果想对你的Bean使用AOP或者Spring的相关技术,例如Acegi.为了达到这个目的,你仅仅要做的就是在xwork.xml里移除你的WebWork Action的类的属性,然后在applicationContext.xml里面增加一个Bean.
你的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="foo" class="com.acme.Foo"/>
- <bean id="bar" class="com.acme.Foo"/>
- </beans>
<?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="foo" class="com.acme.Foo"/>
<bean id="bar" class="com.acme.Foo"/>
</beans>
你的xwork.xml文件里面的action应该这样定义:
- <!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.1.dtd">
-
- <xwork>
- <include file="webwork-default.xml"/>
-
- <package name="default" extends="webwork-default">
- <action name="foo" class="foo">
- <result>foo.ftl</result>
- </action>
- </package>
-
- <package name="secure" namespace="/secure" extends="default">
- <action name="bar" class="bar">
- <result>bar.ftl</result>
- </action>
- </package>
- </xwork>
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN" "http://www.opensymphony.com/xwork/xwork-1.1.dtd">
<xwork>
<include file="webwork-default.xml"/>
<package name="default" extends="webwork-default">
<action name="foo" class="foo">
<result>foo.ftl</result>
</action>
</package>
<package name="secure" namespace="/secure" extends="default">
<action name="bar" class="bar">
<result>bar.ftl</result>
</action>
</package>
</xwork>
记住:这个不是必需的.仅仅当你需要使用Spring的拦截器或者IoC来修饰Action以便覆盖Webwork的缺省行为时,这才是必要的.要记住一点,WebWork的Spring组合会执行标准的IoC,使用你指定的自动装配策略,即使你没有明确第在Spring中映射每个Action.所以通常你不需要做这个,但是知道可以这样做对你是有好处的,如果你需要的话.
和以前版本的区别
其实本质上是一样的,主要区别如下:
可以不配置SpringObjectFactoryListenter,直接在webwork.properties里指定.
在webwork.properties里可以指定autoWire策略.
其他
其实通过查看源码可以知道,还有几个其他的类,可以做其他的设置,例如SpringProxyableObjectFactory,SessionContextSpringProxyableObjectFactory等,至于如何使用,那就慢慢研究吧
分享到:
相关推荐
webWork2.2+spring +SpringMVC组合 例子
webwork2.2例子带有lib包,针对刚入手的同事
WebWork 2.2新特性的PPT.rar
webwork2.2.jar 类包 web work2
webwork中结合spring说明,自己看吧,对你或许有用
调试webwork(没有调试成功) 博文链接:https://lwfshr.iteye.com/blog/137548
webwork的包。webwork开发者不可缺少的
最近在做个项目,用的是webwork+spring+hibernate,在网上看了不少webwork+spring的配制方式,大多都是老的配制方式,比如2.1.7的,webwork2.2.4新加了很多功能,和spring的配制也简单了很多,我做了一个简单的登录...
webwork&hibernate&spring整合的例子
用webwork +spring实现的注册管理系统
如何实现webwork+spring+hibernate框架结合
webwork 2.1.7 版 原版留存 xwork.jar
webwork2.1 spring jar包
WEBWORK+IBATIS+SPRING包资源下载
这是学习veloctiy+webwork+ibatis+spring所要的资料,对你入门学习很帮助!
WebWork%2BSpring%2BHibernate源码.rar
用于集成WebWork2.1和Spring的一个jar文件,编译级别jdk1.4, 已测试过,可以整合