`
typot
  • 浏览: 43086 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

webwork spring ioc

阅读更多
Spring与Webwork集成(精华版,强烈推荐!)
2008年04月22日 星期二 09:16 A.M.
伴随着其他东西,Spring同时也是一个控制反转框架.(原文:Spring is, among other things, an Inversion of Control framework.) 它在WebWork 2.2中是推荐的IoC容器.你可以在http://www.springframework.org找到更多关于Spring的信息.

此部分仅包括 支持 Spring集成的技术.当然,还有很多其他的方法把Spring和WebWork绑定在一起.请查看其他集成Spring的方法了解更多信息. 注意其他方法的任何一个都不被支持,而且可能随时发生变化!(原文:Note that none of the other methods are currently supported and could change at any time!) 

开启Spring集成
在WebWork中开启Spring支持是一件简单的事情,只需要安装最新的Spring的jar文件到你的classpath,然后添加下面的行到webwork.properties文件:

webwork.objectFactory = spring
如果你想要改变缺省的自动装配模式,也就是自动按照name装配(例如,使用你的bean属性相同的名字去查找在Spring里定义的bean),你也需要在你的webwork.properties中进行一下设置:

webwork.objectFactory.spring.autoWire = type
这个设置的选项包括:

name 按照你的action的属性的名字和Spring里的bean的名字,如果匹配就自动装配. 这是缺省的
type 按照你的action的属性的类型,在Spring注册的bean中查找,如果相同就自动装配.这需要你在Spring中仅注册了一个此类型的bean
auto Spring会试图自动监测来找到最好的方法自动装配你的action
constructor Spring会自动装配bean的构造函数的参数

在这种情况下,所有的对象都至少会试图使用Spring来创建.如果它们不能被Spring创建,然后WebWork会自己创建对象.接下来,你需要在web.xml打开Spring的Listener:

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
需要更多的 ApplicationContext 配置文件?

既然使用一个标准的Listener来集成Spring,它可以被配置来支持除了applicationContext.xml之外的配置文件.把下面的几行添加到你的web.xml会让Spring的ApplicationContext从所有匹配给定的规则的文件中初始化:

<!-- Context Configuration locations for Spring XML files -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext-*.xml,classpath*:applicationContext-*.xml</param-value>
</context-param>
浏览Spring的文件查看这个参数的详细描述.


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>
从内置的IoC切换到Spring
切换是非常简单的.Spring的设置就像上面描述的已经完成.为了完成迁移,你还需要
Switching is quite easy. Spring setup is done as described above. To complete migration, you will have to

适当地转换你配置的组件,从 components.xml 到 applicationContext.xml. 然后你可以安全地删除 components.xml.
在xwork.xml中,从你的拦截器stack里移除 组件拦截器. 虽然保留它在那里不会带来任何影响,但是从现在开始它只不过是多余的了.
Session 会话范围和Spring

Spring <= 1.3 不支持 session 会话范围的组件. Spring 2.0 版本会增加这个支持, 并且在对Spring 2.0M3 (beta) 的测试中被报告可以工作的很好. 请查阅 和Spring的Session组件一起工作 来了解这个话题的更详细信息.


从Spring中初始化 Action
正常情况下,在xwork.xml里你可以为每个action指定类.当你使用SpringObjectFactory(就像上面配置的)时WebWork会请求Spring来创建action并按照缺省指定的自动装配行为来装配依赖的组件.SpringObjectFactory 也会设置所有的bean的后置处理程序(post processors)来完成类似对你的Action进行事务,安全等等方面的代理的事情.Spring可以不依赖外在的配置来自动确定.对于大多数的使用,这就是你所全部需要的了,用来配置你的action,设置它们获取服务和依赖组件.

我们 强烈 推荐你找到一种声明式的方法来让Spring知道为你的action提供什么.这包括让你的bean能够自动装配,无论是把你的Action里的依赖的属性命名为和Spring应该提供的Bean的名字一致(这允许基于名字的自动装配),或者使用by type方式的自动装配,也就是在注册到Spring的Bean中需要的类型仅拥有一个.也可以包括使用JDK5的标准来声明事务和安全需求,而不是必须在你的Spring配置里明确设置代理.如果你能找到方法让Spring在没有任何明确的配置(在_applicationContext.xml_中)的情况下知道需要为你的action做什么,那么你就不需要在两个地方维护这个配置了.

However, sometimes you might want the bean to be completely managed by Spring. This is useful, for example, if you wish to apply more complex AOP or Spring-enabled technologies, such as Acegi, to your beans. To do this, all you have to do is configure the bean in your Spring applicationContext.xml and then change the class attribute from your WebWork action in the xwork.xml to use the bean name defined in Spring instead of the class name.

当然,有时候你可能想要Spring完全来管理bean.这是有实际意义的,例如,如果你想要为你的bean设置更复杂的AOP或者Spring相关的技术,例如Acegi.为了达到这个目的,你所有必须要做的事情就是在Spring的 applicationContext.xml 里配置你的bean,然后在 xwork.xml 里改变你的WebWork action的类属性来使用在Spring里面定义的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="com.acme.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>
在你的 applicationContext.xml 里定义了一个名字为 "bar"的Spring的bean.注意 com.acme.Foo 不需要改变,因为它可能是自动装配的.

一个典型的spring的bar的配置可能看起来像下面列出的一样.

<?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="bar" class="com.my.BarClass" singleton="false"/>
      ...
</beans>
注意spring配置里面的id属性对应xwork配置里面的class属性. 还要注意在spring配置中,singleton(单态) 属性被设置为false. 这通常是因为WebWork希望基于每个request来创建一个新的action.因此当用到Spring集成时,这会是期望的行为.让Spring的singleton 属性为false就可以做到这一点.


记住: 这不是必须的. 仅仅当你希望覆盖在WebWork中创建一个action时的缺省行为,而要用Spring的拦截器,以及Spring不能自动确定IoC策略时,这才是必要的. 要记住一点,WebWork的Spring集成会进行标准的IoC,使用你指定的任何自动装配策略,即使你没有明确第在Spring中映射每个Action.所以通常你不需要做这个,但是知道怎么做当你需要的时候对你是有好处的.

分享到:
评论

相关推荐

    webwork-register.rar_webwork_webwork 验证_webwork spring

    WebWork和Spring是两个在Java Web开发中广泛使用的框架,它们各自有其独特的优势,并且可以结合使用以增强应用的功能和可维护性。本项目"webwork-register.rar"显然是一个基于WebWork和Spring构建的注册管理系统,让...

    webwork spring hibernate 整合 示例 项目 完整 代码

    WebWork、Spring 和 Hibernate 是三个在Java开发领域中非常重要的框架。它们分别专注于Action层、IoC(Inversion of Control,控制反转)/AOP(Aspect Oriented Programming,面向切面编程)以及持久化管理。当这三...

    webwork spring hibernate整合实例源代码

    2. 整合WebWork与Spring:通过Spring的Struts2插件(WebWork2已被Struts2合并)将Spring的IoC容器集成到WebWork中,使得Action类可以在Spring容器中被管理。 3. 配置Hibernate:创建Hibernate的配置文件(如`...

    webwork+spring整合例子 内带使用说明 以及webwork文档(中文)

    整合WebWork和Spring的主要目的是将WebWork的MVC能力和Spring的IoC/DI以及企业服务集成到一个应用中。这样,开发者可以利用WebWork的动态控制层与Spring的强大持久层和事务管理功能,实现更加高效的开发流程。 在这...

    WebWork Spring Hibernate整合开发网络书城(3)

    在IT行业中,WebWork、Spring和Hibernate是三个非常重要的开源框架,它们分别专注于Action层、IoC(Inversion of Control)/DI(Dependency Injection)以及持久层管理。本教程将探讨如何将这三个框架整合在一起,...

    webwork+spring+hibernate 开发资料

    Spring框架则是一个全面的企业级应用框架,它包括IOC(Inversion of Control)容器、AOP(Aspect Oriented Programming)支持、数据访问、事务管理等多个模块。Hibernate是一个强大的ORM(Object-Relational Mapping...

    spring与webwork框架集成

    2. **WebWork2 IoC**:WebWork2 自带了简单的IoC功能,允许在 `xwork.xml` 中配置 Action 依赖的 Bean。例如,`&lt;external-ref&gt;` 标签用于声明 Action 对 DAO 类的依赖。 3. **集成步骤**: - **下载集成库**:需要...

    webwork spring hibernate整合实例源代码全部jar包

    Spring的核心是IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入),这使得组件之间的耦合度大大降低,提高了代码的可测试性和可维护性。 Hibernate则是一个对象关系映射(ORM)框架,...

    WebWork Spring Hibernate整合开发网络书城(4)

    Spring的IoC(Inversion of Control,控制反转)容器和依赖注入(Dependency Injection)机制简化了对象之间的依赖关系,提高了代码的可测试性和可维护性。 【Hibernate】是Java领域的一个对象关系映射(ORM)框架...

    搭建WEBWORK+SPRING+HIBERNATE框架

    - 使用Spring的IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)特性,创建Service层和DAO层,实现业务逻辑和数据访问。 - 将Service和DAO注入到WebWork的Action中,...

    WebWork Spring Hibernate整合开发网络书城(2)

    在IT行业中,WebWork、Spring和Hibernate是三个非常重要的开源框架,它们分别专注于Action层、IoC(Inversion of Control,控制反转)/AOP(Aspect Oriented Programming,面向切面编程)以及持久化层的处理。...

    webwork+spring+ibatis简单实例

    在IT行业中,Web开发是一个广泛讨论的话题,而`webwork`、`spring`和`ibatis`是构建高效、灵活的Web应用的三大组件。这个"webwork+spring+ibatis简单实例"提供了如何整合这三个框架来创建一个功能完整的应用程序的...

    WebWork.Spring.Hibernate整合开发网络书城全系列视屏4

    Spring的IoC(Inversion of Control,控制反转)容器负责对象的创建和依赖注入,降低了组件之间的耦合。AOP(Aspect-Oriented Programming,面向切面编程)允许开发者定义横切关注点,如日志、事务管理等,进一步...

    webwork2.2.7+spring+hibernate+oracle整合

    - **Spring与WebWork集成**:通过Spring作为WebWork的IoC容器,可以更方便地管理Action对象及其依赖关系,提高代码的可测试性和可维护性。 - **Hibernate与Oracle集成**:利用Hibernate作为持久层框架,可以简化与...

    webwork+spring+ibatis

    Spring 的核心是IoC(Inversion of Control,控制反转)和DI(Dependency Injection,依赖注入),这些设计模式有助于降低组件间的耦合度,提高代码的可测试性和可维护性。Spring MVC是Spring框架的一部分,用于构建...

    webWork2.2+spring +SpringMVC组合 例子

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

    webwork+spring+ibatis小例子

    Spring的IoC容器管理对象的生命周期和相互关系,使得代码更易于维护。此外,Spring还包含对数据访问、事务管理、安全等的支持。在这个例子中,Spring可能被用来管理WebWork和iBATIS之间的依赖关系,以及提供事务管理...

    开发指南(spring,hibernate,ibatis,webwork)

    【开发指南(spring,hibernate,ibatis,webwork)】 在软件开发领域,Spring、Hibernate、iBatis和WebWork是四个重要的框架,它们分别在不同的层面为开发者提供了便利。下面将对这些框架进行详细阐述。 1. **Spring...

    webwork+spring+hibernaet

    **Spring** 是一个全面的企业级应用开发框架,不仅提供了IOC(Inversion of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程)等核心特性,还包含了大量的模块,如数据访问/集成、Web框架、...

    WebWork+Spring+Hibernate整合开发网络书城 第5讲

    在本课程中,我们将讨论如何将Spring与WebWork整合,利用Spring的IoC容器管理WebWork的动作实例,以及如何配置Spring的事务管理。 接下来,Hibernate作为一款流行的ORM(对象关系映射)框架,使得Java开发者可以更...

Global site tag (gtag.js) - Google Analytics