`
leo1211
  • 浏览: 140411 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

WebWork2.2 中整合Spring的“新方式”

阅读更多

请以英文版本为准,谢谢.本文不可能实时更新.

本文大部分内容来自http://wiki.opensymphony.com/display/WW/Spring,本文主要是把内容翻译过来并补充一下内容,请以英文版本为准. :) 

在WebWork2.2中,spring已经作为IOC的支持基础,原有的Spring结合的方法已经分别溶入到XWork和WebWork的源码中.XWork的IoC将要被抛弃了.

当然原有的组合办法依然有效,一些类改了包名和类名,但是使用方法类似.

在WebWork2.2中,还有一种新的办法来结合Spring.


开启Spring组合

 在WebWork中开启Spring支持是非常简单的,把最新版本的Spring的jar放到你的classpath中,然后在webwork.properties里面设置如下选项:

 

webwork.objectFactory = spring 

 

此时使用的类是: com.opensymphony.webwork.spring.WebWorkSpringObjectFactory,也可以指定为其他SpringObjectFactory.

缺省Spring的装配策略是 by name,可以修改webwork.properties改为其他方式,例如type,name,auto等


 
 这时所有对象都首先来用Spring来创建.如果Spring没有创建这些对象,WebWork会自己创建这些对象. 然后,你需要在web.xml里面设置Spring的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>

 

使用Spring初始化Action 

一般来说,你在xwork.xml里面为每个Action指定类.当使用SpringObjectFactory的时候(如果按照上面的方法配置了), 这意味着WebWork会首先请求Spring创建这个Action并按照缺省的自动装配策略设定依赖的属性.SpringObjectFactory还会调用所有bean的处理器来处理事务,安全等方面的代理机制.不需要特殊的设置Spring就可以自动确定.对大多数的应用,这会配置你的Action所需的服务和依赖,来达到你的所有要求.

 

 我们强烈推荐你找到一种声明的方法来让spring知道该为你的Action提供什么.这包括把你的Action里的属性命名为在Spring配子文件里定义的Bean的名字一致,这样可以实现基于名字的自动装配,还可以使用JDK5的标注来声明事务和安全层需要.如果你能找到方法让Spring知道你的Action需要什么而且不需要在applicationContext.xml里面进行外部配置的话,你就不需要在2个地方维护配置了.


 

 

然而,有时你可能想要Spring来完全管理Bean.这是有实际意义的,例如,你如果想对你的Bean使用AOP或者Spring的相关技术,例如Acegi.为了达到这个目的,你仅仅要做的就是在xwork.xml里移除你的WebWork Action的类的属性,然后在applicationContext.xml里面配置这个Bean.
 
 你的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>

Where you have a Spring bean defined in your applicationContext.xml named "bar". Note that the com.acme.Foo action did not need to be changed, because it can be autowired. 

(你需要在你的applicationContext.xml里定义一个名字为"bar"的bean. 注意 com.acme.Foo不需要被改变,因为它是自动装配的.)


 记住:这个不是必须的.仅仅当你需要使用Spring的拦截器或者IoC来修饰Action以便覆盖Webwork的缺省行为时,这才是必要的.要记住一点,WebWork的Spring组合会执行标准的IoC,使用你指定的自动装配策略,即使你没有明确第在Spring中映射每个Action.所以通常你不需要做这个,但是知道怎么做对你是有好处的,如果你需要的话.


和以前版本的区别

 其实本质上是一样的,主要区别如下:

  •  可以不配置SpringObjectFactoryListenter,直接在webwork.properties里指定.
  •  在webwork.properties里可以指定autoWire策略.
  •  SpringObjectFactory里面多了一个buildAction,用来根据前面提到的命名习惯查找action. (已经删除)


其他 

其实通过查看源码可以知道,还有几个其他的类,可以做其他的设置,例如SpringProxyableObjectFactory,SessionContextSpringProxyableObjectFactory等,至于如何使用,那就慢慢研究吧 :)

分享到:
评论

相关推荐

    webWork2.2+spring +SpringMVC组合 例子

    【标题】:“webWork2.2+spring+SpringMVC组合例子”是一个示例项目,展示了如何将三个经典的Java Web框架——WebWork2.2、Spring以及Spring MVC整合在一起,以构建一个完整的Web应用程序。这样的组合可以充分利用各...

    spring3.0+struts2.2+hibernate3.3集成.rar

    描述中同样强调了这个主题,暗示了压缩包内可能包含了一个演示或教程,讲解如何将这三个流行的技术——Spring 3.0、Struts 2.2和Hibernate 3.3——整合在一起。 **Spring 3.0** 是一个全面的Java应用框架,提供依赖...

    Spring-Reference_zh_CN(Spring中文参考手册)

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.1.1. @Configurable object的单元测试 6.8.1.2. 多application context情况下的处理 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来...

    Spring中文帮助文档

    6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...

    spring、struts、ibatis框架搭建流程

    ##### 2.2 加入Spring框架 - **复制JAR文件**:将解压缩后的Spring框架中的`spring.jar`文件复制到Web项目的`WEB-INF/lib`目录下。 - **复制Log4j JAR文件**:将Spring框架解压文件夹下的`lib\log4j`中的所有jar文件...

    Spring 2.0 开发参考手册

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. ...

    spring chm文档

    6.8.1. 在Spring中使用AspectJ来为domain object进行依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. ...

    struts+spring+ibatis.doc

    通过整合Struts、Spring与ibatis,JpetStore 4.0不仅展现了ibatis在数据持久化方面的高效与灵活性,也展示了Struts与Spring在构建高效、可维护的J2EE应用程序中的协同优势。这种模式下的开发,不仅减少了代码量,...

    Spring API

    6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...

    spring入门

    - **实现方式**: 在Spring框架中,IoC主要通过DI来实现。IoC容器负责管理对象的生命周期和配置,以及处理对象间的依赖关系。 - **好处**: 提高组件的复用性和测试性,同时降低了组件间的耦合度。 ##### **2.2 DI ...

    Java各种开发框架总结.docx

    WebWork2.2还引入了对AJAX的支持,结合DWR和Dojo框架。 Struts是另一个流行的Java Web开发框架,它基于Servlet和JSP技术,实现了MVC设计模式。Struts通过整合自定义标签和信息资源,简化了开发流程,使得开发者无需...

    struts spring hibernate +Extjs整合实例(包含jar包)

    前提是数据库test必修存在,一般mysql默认是有这个数据库的, 数据表的名字是person,如果你有相同的表的话请备份,...限于上传的限制,spring.jar 和 webwork.2.2.jar还没加进来 欢迎交流:百度hi java_web群 1028944

    java开源框架的集合

    此外,WebWork2.2版本还增加了对AJAX的支持,这主要基于DWR和Dojo这两个框架。 #### Struts —— Java开源Web框架 **Struts** 是一个基于J2EE平台的MVC框架,它整合了Servlet、JSP、自定义标签和信息资源等技术,...

    图书管理系统J2EE设计报告书

    Struts2实际上是基于Webwork2.2发展起来的,与早期的Struts1.x在架构上有显著区别,不需直接继承Action类,而是通过Getter和Setter方法处理表单数据。开发者通常会继承ActionSupport类,利用其提供的国际化、验证和...

    Java最著名的开源项目

    在WebWork 2.2版本中,添加了对AJAX技术的支持,这一支持建立在DWR(Direct Web Remoting)和Dojo这两个流行的框架之上。 Struts是一个广泛使用的MVC框架,它将Servlet、JSP、自定义标签和消息资源整合到一个统一的...

    总结Java部分的框架和开源项目.docx

    Spring 通过 Inversion of Control (IoC) 和 Dependency Injection (DI) 的方式来管理应用程序中的对象依赖关系,简化了应用开发。 - **IoC 容器**:Spring 的 IoC 容器是框架的核心,它负责实例化、配置和装配 Bean...

    DWR中文文档

    - **使用Spring配置DWR**:整合Spring的依赖注入机制。 ##### 4.3 DWR与JSF - **JSFCreator**:专门用于JSF环境的Creator实现。 - **ServletFilter**:确保DWR请求能够正确处理。 ##### 4.4 DWR与Struts - **...

Global site tag (gtag.js) - Google Analytics