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

Spring ActionScript入门教程(1)-简介

    博客分类:
  • flex
阅读更多
Spring ActionScript入门教程(1)-简介
Spring ActionScript入门教程(1)-简介
Posted 九月 14th, 2009 by 郭少瑞

    * Caringorm
    * spring

这是一个系列文章,总共3篇,RIAMeeting将在这3篇文章中为大家讲述Spring ActionScript的基本概念以及使用方法,通过学习这3篇文章,开发者可以创建出一个简单的Spring ActionScript的应用,并体会到Spring ActionScript带来的优势和便捷性。

当然,基本上所有的框架的最大价值在于它给你的结构上的规范和指导意义,所以我们在使用框架的时候,应当尽量去体会框架对于自己编程思想的提升,如果只是为使用框架而是用框架,就会感觉框架繁琐而且加大工作量,增加编码体积,实际上框架的最大优势都是在后期才体现出来的(比如当项目趋于扩大化时的维护,管理和团队协作)。
Part1:介绍Spring ActionScript

首先,我们先来介绍一下Spring ActionScript,如果你来自Java社区,应该对Spring并不陌生,实际上在Java社区中Spring作为替代J2EE的一个轻量级的框架有着非常广泛的应用。Spring包含两个方面的重要功能:IoC和AOP,大家用到Spring最多的地方实际上也是IoC。另一个方面AOP面向切面在AS中不被支持。简单的说,Spring ActionScript是Spring在ActionScript中的实现。

名词解释:

IoC:控制翻转(inverse of control),Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传 递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为IoC与JNDI相反——不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就 主动将依赖传递给它。

DI:Dependency Injection (DI),即依赖注入。
Part2:安装Spring ActionScript Framework

在这里以Flash Builder4为例说明如何安装Spring ActionScript Framework。Flash Builder是Flex Builder的最新版本(从4的版本开始更名为Flash Builder)目前还是Beta版,但它从各方面来说都比Flex Builder3提升了不少,所以我们这里使用Flash Builder4以提升编程的效率。

言归正传,如果我们需要安装为Flash Builder安装Spring ActionScript Framework,需要遵循以下的步骤:

   1. 安装Flash Builder4,你可以从Adobe的网站(http://labs.adobe.com)下载Flash Builder4的安装文件,这个过程非常简单,界面也非常容易使用,因为Flash Builder是基于Eclipse的。
   2. 创建一个新项目,或者导入原有的Flex Builder3的项目
   3. 下载Spring ActionScript Framework的SWC文件,下载地址在本文的最底部
   4. 下载依赖的第三方SWC文件,因为这个项目依赖了很多第三方的类库,所以需要你把这些依赖的类库也都下载下来,这些类库包括:as3commons-reflect.swc , as3commons-lang.swc , as3commons-logging.swc , flexunit.swc,这些都在最底部的压缩文件中被包含,下载即可
   5. 将所有下载的SWC文件移动到你的项目的Libs目录,然后你需要修改编译参数,将这些类库编译到SWF中去,步骤是:打开项目属性面板,定位到 Flex Compiler选项,找到additional compiler arguments,输入类似于下面的语句:-locale en_US -default-background-color #000000 -include-libraries ../libs/spring-actionscript.swc ../libs/as3commons-reflect.swc ../libs/as3commons-lang.swc ../libs/as3commons-logging.swc ../libs/flexunit.swc

      参见图片说明,点击查看大图:

      点击查看大图

在上面我们稍感麻烦的一点是还要手工把所有的依赖的SWC编译进去,否则运行时会找不到依赖的库,一旦项目依赖的库比较多,这个配置代码就会很长,也会给部署的人带来麻烦,针对这种情况,Maven有非常好的解决方法,参见RIAMeeting关于Maven的介绍文章:

   1. http://www.riameeting.com/node/445
   2. http://www.riameeting.com/node/446
   3. http://www.riameeting.com/node/447

Part 3: 使用Spring ActionScript中的XML配置

Spring ActionScript 允许你使用XML描述文件来定义你需要在应用中使用的实例以及它们之间的相互依赖关系。这个XML文件可以是一个外部的XML文档,也可以是一个内嵌的 XML(嵌入到Flex的MXML中作为元数据存在)。这两种方式都被支持,只是在使用上稍有区别。

非常需要注意的是在Flex中使用Spring,必须要保证被依赖的类被编译到SWF中,否则会报运行时错误(无法找到所需的类),解决方法参加Part2的编译器参数部分。

下面我们来讨论如何编写Spring的配置文件,这个配置文件遵循XML结构,我们先来看一个典型的配置文件,你可以打开你的Flash Builder4,然后新建一个文本文件,命名为"application_context.xml",然后粘贴下面的代码片段到这个文件中:

   1.
      <objects>
   2.
      <import file="services.xml"/>//行1
   3.
      <import file="resources/messageSource.xml"/>//行2
   4.
      <import file="/resources/themeSource.xml"/>//行3
   5.
      <object id="object1" class="..."/>//行4
   6.
      <object id="object2" class="...">//行5
   7.
      <property name="elements" value="123456" />//行6
   8.
      </object>
   9.
      </objects>

对于熟悉XML的朋友,这段配置非常容易理解,主要包含以下几个方面:

   1. 支持导入xml文件(参加行1,2,3),就是说,我们可以按照一定的规则拆解XML中的内容到不同的文件,以便于管理和维护,方法是使用import标签
   2. 实例化一个对象,使用object标签(参见行4,行5),其中有两个必须的属性,即id和class,id代表对这个object的引用,class代表这个object对应的类,注意要写全类名和包路径,比如:class="mx.containers.Panel"
   3. 使用property属性定义这个object的依赖(参见行6),比如这个object需要的一些字符串类型的数据,以及对另外一个对象的引用等等,如果是直接赋值,使用value,引用则使用ref

我们还可以使用定义外部变量(常量)的方式,将一些配置方面的信息以变量或常量的形式定义在外部,以便于部署和维护时候的修改,通常我们会建立一个类似于prop.properties这个的一个文本文件,然后使用下面的变量声明方式来声明变量:

   1.
      s1=First string
   2.
      s2=Second string

在XML中引用,使用${s1}的方式来引用:

   1.
      <objects>
   2.
      <property file="strings.properties" />
   3.
      <object id="string1" class="String">
   4.
      <constructor-arg value="${s1}"/>
   5.
      </object>
   6.
      <object id="string2" class="String">
   7.
      <constructor-arg value="${s2}"/>
   8.
      </object>
   9.
      </objects>

还可以在一个对象的内部使用内联对象,举例:

   1.
      <object id="outer" class="...">
   2.
      <property name="target">
   3.
      <object class="com.example.Person">
   4.
      <property name="name" value="Fiona Apple"/>
   5.
      <property name="age" value="25"/>
   6.
      </object>
   7.
      </property>
   8.
      </object>

下表是在配置文件中常用的一些标签以及相关的说明和用法
术语 说明 代码示例
${变量名} 你可以把一些变量分离出来写在单独的文本文件中,然后在配置中引用这些变量,这样最大的好处是你可以把配置信息比如Server端的连接地址放在单独的文件中,方便修改和维护

新建global.prop文本文件,写入:

variable1=10

在配置中引用:

${variable1}
object 在XML配置中,每一个对象用Object来表示,然后分别用id和class代表唯一标示和类的名称 <object id="obj" class="mx.ctrol.Button" />
property 你可以使用property为对象的属性复制,这也是IoC的精髓,即从这里把依赖注入到对象。name就是属性的名称,而value就是你要赋予的具体的值

<object ... >

<property name="name" value="Fiona Apple"/>

</object>
ref 除了可以直接赋值,你也可以通过使用ref在属性中引用别的对象

<object id="a" .../>

<object ... >

<property name="name" ref="a"/>

</object>
constructor-arg 如果你的对象实例化的时候需要从构造函数中传入参数,那么可以使用这个属性,将所需的参数传递进去

<object ... >

<constructor-arg>
<ref>anotherExampleObject</ref>
</constructor-arg>
<constructor-arg type="int" value="1"/>

</object>
factory-method 工厂方法,含义是不使用new对这个Object进行实例化,而是调用这个类的静态方法,可用于单例模式的实现 <object id="a" class="A" factory-method="getInstance" />
dictionary 相当于AS3中的Dictionary,你可以在配置中声明一个Dictionary对象 <dictionary>
<entry>
<key>development</key>
<value>dx</value>
</entry>
</dictionary>
array 同样,你可以在配置中声明一个数组对象 <array>
<value>ssnce</value>
<value><ref object="s"/></value>
</array>
array-collection 对应Flex中的ArrayCollection,当然只有Flex的应用才可以使用这个配置方式 <array-collection>
<value>ssnce</value>
<value><ref object="s"/></value>
</array-collection>
depends-on 定义依赖关系,含义就是先初始化它的依赖,然后初始化自己 depends-on="manager,accountDao"
lazy-init 如果值为true,则不马上初始化,而是在第一次调用的时候才初始化 <object ... lazy-init="true"/>
autowire

自动装配,Spring ActionScript支持自动装配,含义就是你只要声明某个对象为自动装配,它就会按照规则自动去寻找这个对象的依赖并注入给它,而不需要手工操作。

默认是no,可以选择byName,byType,constructor,autodetect来自动装配对象的依赖。使用自动装配时,应当权衡利弊,合理的与ref的方法相结合,尽量在降低工作量的同时,保证应用的可维护度
<object ... autowiret="byName"/>
singleton 一个布尔量,对一个对象而言,这个属性的设置为True则只创建一个实例,false则每次调用都创建新的实例 <object ... singleton="true"/>
init-method 初始化方法,含义是创建实例后,调用实例的这个方法进行初始化 init-method="init"
method-invocation 调用对象的方法 <method-invocation name="init"/>
abstract 定义继承关系,你可以将一个对象的abstract属性设置为true,然后在另一个对象中定义parent=这个对象,含义就是继承原对象的所有的属性 <object id="inheritedTestObject" abstract="true">
<property name="name" value="parent"/>
<property name="age" value="1"/>
</object>
<object id="inheritsWithDifferentClass"
class="org.springactionscript.objects.DerivedTestObject"
parent="inheritedTestObject" init-method="initialize">
<property name="name" value="override"/>
<!-- the age property value of 1 will be inherited from parent -->
</object>
template 你可以将重复性的设置工作定义为模板,然后其它对象就可以使用这个模板 <template id="remoteObject">
<object class="mx.rpc.remoting.mxml.RemoteObject">
<property name="makeObjectsBindable" value="${makeBindable}"/>
</object>
</template>
<object id="concreteService" template="remoteObject">
<param name="makeBindable" value="false"/>
</object>
application Flex专属属性,你可以通过配置下面这个对象:<object class="org.springextensions .actionscript.ioc. factory. config.flex. ApplicationPropertiesResolver"/>,然后就可以在其他的配置中使用application这个变量,使用方式是:${application.url}

    * application.frameRate
    * application.historyManagementEnabled
    * application.pageTitle
    * application.resetHistory
    * application.scriptRecursionLimit
    * application.scriptTimeLimit
    * application.url
    * application.url.protocol
    * application.url.host
    * application.url.port
    * application.usePreloader
    * application.viewSourceURL

Part 4: 使用容器载入配置文件

上面我们讨论如何编写一个配置文件,然后我们看一下如何在Flex中载入并解析这个文件。

首先需要了解的是,我们如果要在Flex中使用DI注入对象,需要使用一个IoC容器来做这件事。 FlexXMLApplicationContext 或 XMLApplicationContext 是Spring关于IoC的基础容器。两者基本相同,第一个只是增加了对Flex的支持,比如ArrayCollection。一般也认为这是程序的入 口,我们写代码的开始会用到这两个类,用于载入和分析配置文件(XML)。

使用容器载入配置的代码示例:

   1.
      var applicationContext:XMLApplicationContext
   2.
      = new XMLApplicationContext();
   3.
      applicationContext.addConfigLocation("application-context.xml");
   4.
      applicationContext.addEventListener(Event.COMPLETE, handleComplete);
   5.
      applicationContext.load();

在下一个章节,我们将来讲述使用Spring ActionScript创建一个简单的实例,而在第三个章节,我们则会引入Cairngorm。
分享到:
评论

相关推荐

    Spring ActionScript 开发教程

    #### 九、Spring ActionScript Operation API 入门教程 - **Operation API**:这是一种高级特性,用于处理更复杂的业务逻辑。 - **Operation (操作)**:操作是对某个业务过程的封装。 - **Command (命令)**:命令...

    spring actionscript 入门例子

    这个入门例子旨在帮助初学者理解如何在 Flex 或 ActionScript 项目中应用 Spring ActionScript,以实现依赖注入、组件管理和应用程序架构的优化。 **依赖注入**是 Spring 框架的核心特性之一,它允许开发者解耦组件...

    Spring ActionScript教程

    ### Spring ActionScript教程知识点概述 #### 一、Spring ActionScript框架简介 Spring ActionScript是一种将流行的Java框架Spring移植到ActionScript环境下的实现。它主要针对Adobe Flash和Flex平台,为开发者...

    cairngorm简单入门实例(结合spring+ibatis)

    **cairngorm简介** `Cairngorm`是一个轻量级的ActionScript框架,主要用于构建Flex和Adobe AIR应用程序。这个框架提供了一种结构化的方法来管理应用的复杂性,促进了模块化、可维护性和可扩展性的开发。Cairngorm的...

    Red5入门教程

    Red5入门教程旨在引导初学者了解和掌握Red5这一开源流媒体服务器的使用。Red5是基于Java开发的,能够实现与Adobe的FMS(Flash Media Server)相似的功能,包括实时流媒体传输、录制播放视频、共享对象以及远程调用等...

    spring blazeds 整合实例(源码)

    - `spring-blazeds-101`:可能是一个基础教程或者示例,帮助初学者快速入门Spring与BlazeDS的整合。 - `traderdesktop`:可能是一个交易桌面应用的示例,演示如何在Flex界面上实现与Spring后端的数据交换。 - `...

    Flex入门教程及帮助文档

    本入门教程及帮助文档旨在帮助初学者快速掌握Flex的基本概念、开发环境搭建以及与后端技术如Java的集成。 在《整合Flex和Java--配置篇.pdf》中,主要探讨了如何将Flex与Java后端进行无缝连接。这通常涉及到Flex...

    Flex + BlazeDS+ Java 入门教程

    本教程将带你入门Flex与BlazeDS结合使用,并通过Java实现后台服务。 1. Flex基础 Flex是一种基于MXML和ActionScript的开发语言,用于创建具有动态图形、视频和动画效果的交互式应用程序。MXML是声明式的,用于定义...

    Flex + LCDS + Java 入门教程

    标题中的“Flex + LCDS + Java 入门教程”揭示了本教程主要涉及的技术栈,包括Adobe Flex、LCDS(LiveCycle Data Services)以及Java。这三者在Web应用程序开发中有着重要的角色,特别是对于创建富互联网应用(Rich ...

    Flex入门文档 -王一松

    ### Flex入门知识点详解 #### 1. Flex简介与学习指南 - **Flex概述**:Flex是一种用于构建跨浏览器、跨平台的RIA(Rich Internet Applications)的开源框架。它结合了强大的编程语言ActionScript 3.0和XML,使得...

    Spring攻略(第二版 中文高清版).part1

    第1章 Spring简介 1 1.1 实例化Spring IoC容器 1 1.1.1 问题 1 1.1.2 解决方案 1 1.1.3 工作原理 3 1.2 配置Spring IoC容器中的Bean 4 1.2.1 问题 4 1.2.2 解决方案 4 1.2.3 工作原理 4 1.3 调用...

    flex入门经典教程

    这个“flex入门经典教程”针对的是Java程序员,帮助他们快速掌握Flex的使用,从而能够开发出交互性强、用户体验优秀的Web应用程序。 一、Flex概述 Flex是一个强大的开发工具,它的核心是Flex SDK,包含了编译器、库...

    flex4.6 + spring(注解方式)

    这个demo项目可能包含了以上所有这些配置和代码示例,可以帮助开发者理解并快速入门Flex和Spring的整合,特别是在使用注解方式简化配置的情况下,可以更高效地开发和维护项目。如果你在整合过程中遇到问题,这个demo...

    Flex教程-王一松

    ### Flex教程核心知识点详解 #### 1. Flex基础与入门 - **Flex简介**:Flex是一种用于构建跨浏览器、跨平台的RIA(Rich Internet Applications)的开源框架。它结合了强大的编程语言ActionScript 3.0和XML,使得...

    Flex入门源码 远程java访问 spring集成

    Flex入门源码与远程Java访问Spring集成的知识点涵盖了多个领域,包括前端的Flex技术、后端的Java编程、以及服务层的Spring框架整合。这里我们将深入探讨这些关键点,以便理解整个系统的运作机制。 首先,Flex是一种...

    flex 入门教程

    ### Flex入门教程知识点详解 #### 1. Flex简介与安装 - **Flex概念**:Flex是一种用于构建跨浏览器、跨平台的丰富互联网应用程序(RIA)的技术。它利用了Adobe Flash Player和Adobe AIR来呈现高性能的应用程序。Flex...

Global site tag (gtag.js) - Google Analytics