`
typot
  • 浏览: 42321 次
  • 性别: 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+Spring+Hibernate整合开发网络书城_02(附源代码)

    中间层:Spring IoC 持久层:Hibernate, 需求分析: 用户在注册页面,填写注册信息,确认有效注册成为新用户 用户在登录页面,填写用户名和密码,确认正确后进入系统 用户可以在登录之后,浏览图书分类列表页面 用户可以在...

    WebWork+Spring+Hibernate整合开发网络书城_01(附源代码)

    中间层:Spring IoC 持久层:Hibernate, 需求分析: 用户在注册页面,填写注册信息,确认有效注册成为新用户 用户在登录页面,填写用户名和密码,确认正确后进入系统 用户可以在登录之后,浏览图书分类列表页面 用户可以在...

    webwork hibernate spring 实现留言板,远程登录

    用到知识是webwork做表现层 spring的事务层,IOC AOP hibernate 数据库的映射 Model view control传说中的三层+service 数据库是sqlserver 2005 更重要的是提供所有的.jar框架包

    spring-5.2.6.7z

    Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等...

    spring介绍及应用

    Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等...

    spring环绕通知图示

    Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等...

    spring图解.zip

    Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等...

    SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(Spring

    它解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。 简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式)轻量级开源框架。它可以单独应用于构筑应用程序,也可以...

    spring前置通知分析图示

    Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等...

    spring后置通知分析图示

    Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等...

    spring第四个版本分析图示

    Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、AOP及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts、Webwork、Tapestry等众多Web框架组合使用,并且可以与 Swing等...

    Spring in Action中文版 清晰pdf part2

    第一部分展示了Spring框架的两个核心概念:反向控制(Inverstion of Control,IoC)和面向切面编程(Aspect-Oriented Programming,AOP),以便读者理解Spring的基础原理,这些基础原理在本书各个章节都会用到。...

    bba96 快速开发框架 发布2.0 alpha2

    bba96 不再需要自己写DAO/SERVICE,借助简单的spring ioc即可配置使用缺省DAO/SERVICE,而且通过灵活方便,易扩展的后台持久层与webwork的整合,完全实现了快速开发的目的。其中包含两个快速开发的例子。

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

    6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点实施 ...

    Spring in Action中文版 清晰pdf part1

    第一部分展示了Spring框架的两个核心概念:反向控制(Inverstion of Control,IoC)和面向切面编程(Aspect-Oriented Programming,AOP),以便读者理解Spring的基础原理,这些基础原理在本书各个章节都会用到。...

    spring in action英文版

    第一部分 Spring基础  第1章 开始Spring之旅  1.1 为什么使用Spring  1.1.1 J2EE开发者的一天  1.1.2 Spring的承诺  1.2 Spring是什么  1.3 开始Spring之旅  1.4 理解反向控制  1.4.1 依赖...

    Spring 2.0 开发参考手册

    6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点...

    Spring中文帮助文档

    6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点运算 ...

    spring chm文档

    6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ Load-time weaving(LTW) 6.9. 其它资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点...

    Spring API

    6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7. Spring AOP APIs 7.1. 简介 7.2. Spring中的切入点API 7.2.1. 概念 7.2.2. 切入点运算 ...

Global site tag (gtag.js) - Google Analytics