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。
分享到:
相关推荐
【基于Springboot+Vue的设计与实现】高分通过项目,已获导师指导。 本项目是一套基于Springboot+Vue的管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。也可作为课程设计、期末大作业 包含:项目源码、数据库脚本、开发说明文档、部署视频、代码讲解视频、全套软件等,该项目可以直接作为毕设使用。 项目都经过严格调试,确保可以运行! 环境说明: 开发语言:Java 框架:springboot,mybatis JDK版本:JDK1.8 数据库:mysql 5.7数据库工具:Navicat11开发软件:eclipse/idea Maven包:Maven3.3
这份资料详细介绍了广义表(Generalized List)这一重要的数据结构。广义表是一种递归数据结构,其元素可以是原子(基本数据类型,如数字、字符)或者子表(另一个广义表),具有灵活性和递归性的特点。 资料主要包含七个部分:基本概念介绍、表示方法、存储结构、基本操作、高级操作、应用场景和优化策略。在基本操作部分,详细讲解了创建、遍历、插入、删除等功能的具体实现,每个操作都配有完整的C语言代码示例。在应用场景部分,展示了广义表在表示嵌套表达式、树结构和多层嵌套数据等实际场景中的应用。针对实现过程中可能遇到的内存管理、递归效率、栈溢出等问题,资料也提供了相应的优化策略和解决方案。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
图引擎模块(GE)是MindSpore的一个子模块,其代码由C++实现,位于前端模块ME和底层硬件之间,起到承接作用。图引擎模块以ME下发的图作为输入,然后进行一系列的深度图优化操作,最后输出一张可以在底层硬件上高效运行的图。GE针对昇腾AI处理器的硬件结构特点,做了特定的优化工作,以此来充分发挥出昇腾AI处理器的强大算力。在进行模型训练/推理时,GE会被自动调用而用户并不感知。GE主要由GE API和GE Core两部分组成
校园数字化图书馆系统 JAVA毕业设计 源码+数据库+论文+启动教程(SpringBoot+Vue.JS) 项目启动教程:https://www.bilibili.com/video/BV1jKDjYrEz1
matplotlib图例指南
大学生创业-JAVA-基于springboot+vue的大学生创业项目的信息管理系统
2024年11月,中国电子信息产业发展研究院(赛迪研究院)、中国软件评测中心(工业和信息化部软件与集成电路促进中心)和FreeBuf咨询共同发布《2024年中国数据安全企业全景图》及典型数据安全产品案例集。
【基于Springboot+Vue的设计与实现】高分通过项目,已获导师指导。 本项目是一套基于Springboot+Vue的管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。也可作为课程设计、期末大作业 包含:项目源码、数据库脚本、开发说明文档、部署视频、代码讲解视频、全套软件等,该项目可以直接作为毕设使用。 项目都经过严格调试,确保可以运行! 环境说明: 开发语言:Java 框架:springboot,mybatis JDK版本:JDK1.8 数据库:mysql 5.7数据库工具:Navicat11开发软件:eclipse/idea Maven包:Maven3.3
【基于Springboot+Vue的设计与实现】高分通过项目,已获导师指导。 本项目是一套基于Springboot+Vue的管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。也可作为课程设计、期末大作业 包含:项目源码、数据库脚本、开发说明文档、部署视频、代码讲解视频、全套软件等,该项目可以直接作为毕设使用。 项目都经过严格调试,确保可以运行! 环境说明: 开发语言:Java 框架:springboot,mybatis JDK版本:JDK1.8 数据库:mysql 5.7数据库工具:Navicat11开发软件:eclipse/idea Maven包:Maven3.3
# 基于TreasureHunt项目的户外寻宝游戏系统 ## 项目简介 TreasureHunt是一个旨在鼓励户外活动的寻宝游戏系统。该系统包括一个或多个宝藏和一个寻宝设备(猎手)。通过此项目,参与者可以在户外享受寻找宝藏的乐趣。 ## 项目的主要特性和功能 1. 宝藏与猎手交互猎手设备能够检测并追踪附近的宝藏。 2. 真实距离估算通过WiFi信号估算宝藏与猎手之间的距离。 3. 3D打印的抛物面反射器用于增强猎手设备的信号接收能力。 4. 丰富的用户界面提供详细的操作指南和指示,帮助用户更好地使用该系统。 5. 测试与实验项目中还包括对如何通过WiFi计算距离的尝试和文档记录。 6. 多重库支持项目使用了多个库,如Adafruit SSD1306、Adafruit GFX Library、Adafruit BusIO等,以实现各项功能。 ## 安装使用步骤
在硅谷企业工程师领导力导师道路上的一些观察和思考.pdf
【基于Springboot+Vue的设计与实现】高分通过项目,已获导师指导。 本项目是一套基于Springboot+Vue的管理系统,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的Java学习者。也可作为课程设计、期末大作业 包含:项目源码、数据库脚本、开发说明文档、部署视频、代码讲解视频、全套软件等,该项目可以直接作为毕设使用。 项目都经过严格调试,确保可以运行! 环境说明: 开发语言:Java 框架:springboot,mybatis JDK版本:JDK1.8 数据库:mysql 5.7数据库工具:Navicat11开发软件:eclipse/idea Maven包:Maven3.3
jquery+css3实现的小狗绕地球奔跑动态404页面错误代码
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
Java青协志愿服务管理系统源码 前台技术 JSP(css,js,ajax,el,java) 项目技术 Struts+srping+Hibernate Struts 控制器(负责接收据+处理数据+响应结果(重定向+转)) Spring 工厂类 Hibernate 持久性访问层 log4j.properties 日志文件 *.properties配置文件 Struts.xml 配置action WebRoot根目录 fckeditor在线编辑器, images img 图片 upload,updown 上传下载, admin common 前台JSP页面 WEB-INF (lib+jsp+*.xml) applicationContext.xml 中心配置文件 web.xml 项目配置文件 项目一些基本配置参数
ASP.NET中小企业仓库管理系统源码 源码包含三层代码生成器、数据库设计和表字段说明等。其中包括代码生成器和数据库设计.CDM字段说明 菜单功能 1、入库管理:物品入库管理、入库退货管理、入库结算管理 2、出库管理:物品出库管理、出库结算管理 3、查询统计:物品入库查询、物品出库查询、入库退货查询、入库结算查询、出库结算查询、出库排行榜查询 4、库存管理:库存统计、在库资金统计、库存预警管理 5、基础信息管路:类别管理、物品管理、供应商管理 6、系统设置:管理员管理、操作员管理、用户权限管理 7、密码修改 8、退出系统
1、ioDraw 是免费的在线作图软件,用于制作流程图、思维导图、甘特图、白板手绘图、mermaid流程图、海报设计、折线图、柱状图、拓扑图、组织结构图、UML、ER和时序图、平面设计图、电子电路图等,无需注册即可使用 2、替代Visio的免费软件,无使用限制 3、适合程序员、白领、系统架构师、项目经理、平面设计师、产品经理使用 4、v3.1.0变更日志: 新增将文件保存到百度网盘。 新增对macOS的支持。 修复第三方平台文件列表页显示问题。
yolo系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值
这是来自于的c++考试题目