Flex快速入门系列之三:Parsley框架简单使用(IOC以及message机制)
来源:互联网 发布:天猫美工外包价格 编辑:程序博客网 时间:2024/05/01 04:50
Parsley是一个开源的IOC容器也是一个完全解耦的基于消息中心机制的消息框架,它还为我们提供了一些很有用的工具类。Favous平台即将使用parsley的架构,来配置所有的bean,业务系统以后也会逐渐转向parsley框架,以插件的形式架构,因此在此有必要介绍一下这个框架的基本功能的使用。
Faovus系统不是一个web应用而是一个基于桌面的flexAIR应用,开发完发布后类似一个exe的桌面应用。所以在此要创建一个flex桌面应用,然后添加parsley的支持,做一个简单的例子,配置actionscript的类,并发送消息实现一个简单的消息接受功能。Parsley官网:http://www.spicefactory.org/parsley/,有详细的文档以及API以及框架swc包和源码下载。
前提说明:parsley当前主要使用版本是2.4.0以及2.4.1。Favous平台即将使用的就是2.4.1的,下载地址:http://www.spicefactory.org/parsley/download.php。下载完成后,进入目录:release,你会发现有一个parsley-flex4-2.4.1.swc,它就是我们用到的核心包,在进入spicelib-3.0目录,你会发现有很多个parsley-flex4-2.4.1.swc所依赖的包,根据名字已经可以大概知道各个包的作用了,一般常用到的就是这几个:legacy-spicelib-util-2.5.0.swc,spicelib-reflect-3.0.0.swc,spicelib-util-3.0.0.swc,spicelib-xml-mapper-3.0.0.swc;我们的项目就是要用上面5个。根据需要你可能还会用到parsley根目录下lib目录中的一些swc包。
你可以直接导入samples中的helloworld到flashbuilder中测试运行,但是在此我准备详细解释如何创建一个例子,其中包含了消息机制的其它功能。
第一步:创建应用并添加需要的swc包以及配置文件
在Flashbuilder中创建AIR桌面应用,添加上述swc包;parsley支持两种类型配置文件,mxml和xml,此处主要介绍mxml,xml同理配置。进入parsley解压目录下的samples\helloworld\src\HelloWorldConfig.mxml,复制到项目的src根目录下修改名字为parsleyConfig.mxml,删除配置保留如下结构:
<?xmlversion="1.0" encoding="utf-8"?>
<Objects
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns="http://www.spicefactory.org/parsley"
>
<fx:Declarations>
</fx:Declarations>
</Objects>
第二步:创建DAO与service,并在service中注入DAO,添加配置到配置文件。
1.创建UserDao类
packagecom.mangocity.dao
{
public class UserDao
{
public function UserDao()
{}
public functioncheckUser(user:String, passwd:String):Boolean{
if(user =="hello"){
returntrue;
}
return false;
}
}
}
2.创建Service继承自ILoginService,它只包含了一个login方法。
packagecom.mangocity.service
{
import com.mangocity.dao.UserDao;
import com.mangocity.event.LoginEvent;
import flash.events.EventDispatcher;
import flash.events.IEventDispatcher;
public class LoginServiceImplimplements ILoginService
{
//添加一个parsley可以识别的注解,用来直接派发一个消息出去
[MessageDispatcher]
public var dispatch:Function;
public var userDao:UserDao;
public functionlogin(user:String, passwd:String):void
{
var evt:LoginEvent;
if(userDao.checkUser(user,passwd)){
evt = newLoginEvent(LoginEvent.LOGINSUCCESS);
evt.msg="hellosuccessful!!";
}else{
evt = newLoginEvent(LoginEvent.LOGINFAIL);
evt.msg="sorryfail to login";
}
//派发LoginEvent事件
dispatch(evt);
}
}
}
3.创建一个自定义事件类,主要是在登录判断有了结果之后会派发这样的事件出去:
packagecom.mangocity.event
{
import flash.events.Event;
public class LoginEvent extends Event
{
private var message:String;
public function setmsg(msg:String):void{
this.message=msg;
}
public function getmsg():String{
return message;
}
public functionLoginEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles,cancelable);
}
public static constLOGINSUCCESS:String = "loginSuccess";
public static constLOGINFAIL:String = "loginFail";
}
}
4.添加配置信息,就是IOC注入的配置,非常类似spring的配置文件信息:
<fx:Declarations>
<Objecttype="com.mangocity.service.LoginServiceImpl"id="loginService" lazy="true">
<Propertyname="userDao" idRef="userDao"/>
</Object>
<Objecttype="com.mangocity.dao.UserDao" id="userDao"lazy="true" />
</fx:Declarations>
第三步:在工程的主运行类也就是:ParsleyTest中进行设置
1.添加一个命名空间:xmlns:sf=http://www.spicefactory.org/parsley
2.用标签方式声明一个parsley的context:
<fx:Declarations>
<sf:ContextBuilderid="b" domain="{ApplicationDomain.currentDomain}">
<sf:FlexConfigtype="parsleyConfig"/>
</sf:ContextBuilder>
<sf:Configure/>
</fx:Declarations>
type指定的是我们声明的配置文件的mxml类,<sf:Configure/>指明了这个类将会被parsley的消息框架监控,然后如果有它需要的消息就会被发送给它。
第四步:创建发送消息与接收消息的类(mxml组件用于显示):
1.发送消息的类,可以看到我们可以用[Inject(id="loginService")]的形式来注入一个service类,就像spring的注解一样的方式,然后在调用了login之后就会调用其中的dispatch(evt);派发出一个event。
<?xmlversion="1.0" encoding="utf-8"?>
<s:Panelxmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:parsley="http://www.spicefactory.org/parsley"
width="256" height="154"title="点击发送消息">
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Declarations>
<parsley:Configure/>
</fx:Declarations>
<fx:Script>
<![CDATA[
importcom.mangocity.service.ILoginService;
[Inject(id="loginService")]
public varservice:ILoginService;
private functiononLoginClick():void{
this.service.login(uname.text,'******');
}
]]>
</fx:Script>
<s:Button id="btnlogin"label="单击登录" click="onLoginClick()" x="68"y="52"/>
<s:Label x="23"y="16" text="输入用户" />
<s:TextInput x="79"y="10" id="uname"/>
</s:Panel>
2.接收消息的类:使用[MessageHandler(selector="loginFail")]注解,同时制定selector来说明是接收那个类型的事件或消息,类似一个选择器。
<?xmlversion="1.0" encoding="utf-8"?>
<s:Panelxmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:parsley="http://www.spicefactory.org/parsley"
width="238" height="212"title="获取发送过来的消息">
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Declarations>
<parsley:Configure/>
</fx:Declarations>
<fx:Script>
<![CDATA[
importcom.mangocity.event.LoginEvent;
importmx.controls.Alert;
[MessageHandler(selector="loginSuccess")]
public functiononLoginSuccesful(evt:LoginEvent):void{
Alert.show("登录成功");
ta.text="message:"+evt.msg;
}
//添加如下注解就会自动去根据类型来接受对应的消息
[MessageHandler(selector="loginFail")]
public functiononLoginFail(evt:LoginEvent):void{
Alert.show("登录失败");
ta.text="message"+ ":" + evt.msg;
}
]]>
</fx:Script>
<s:TextArea x="11"y="44" text="" height="77" id="ta"/>
<mx:DateField x="14"y="124"/>
<s:Label x="11"y="10" text="等待接收"/>
</s:Panel>
第五步:在主类中添加这两个组件。
<view:sender x="36"y="48"/>
<view:receiver x="417"y="48"/>
然后输入hello单击登陆,就会在接收消息的框中收到发送过来的消息。
总结:本篇主要介绍parsley的消息机制与IOC注入的方法,给大家对于这个框架一个初步的认识,更多的信息还请参考:http://www.spicefactory.org/parsley/docs/2.4/manual/。本节的项目文件如下
实例的下载地址:
http://download.csdn.net/detail/zhaoshansanxia/4115309
- Flex快速入门系列之三:Parsley框架简单使用(IOC以及message机制)
- [Flex]Flex Ioc Framework - Parsley
- 使用 Parsley 框架构建 Flex 应用程序
- 用Parsley实现Flex Ioc的简单例子
- Flex 4.1 + BlazeDs + parsley框架(Demo实例)
- Flex快速入门系列之二:FlashBuilder创建项目以及远程JAVA对象访问(包括spring)篇
- Flex快速入门系列之四:idea创建项目以及远程对象访问
- 博客开篇以及Flex快速入门系列说明
- Parsley框架之Hello World
- Parsley框架之Hello World
- Spring之IOC快速入门(一)
- Spring框架快速入门之简介(三)
- Spring入门(三)之IoC
- Spring入门(三)之IoC
- Flex快速入门系列之五:crossdomain.xml文件创建以及允许本地跨域访问远程资源
- Quartz 框架快速入门(三)
- Quartz 框架快速入门(三)
- Quartz 框架快速入门(三)
- ASCII码表
- 谷歌用户体验设计十大准则
- 百度员工猝死 是否过劳死引发争论
- 有关socket数据传输的函数
- 李彦宏:我为什么不退休?
- Flex快速入门系列之三:Parsley框架简单使用(IOC以及message机制)
- VC++笔记(一)
- C++ Primer_语句杂记
- 11月26日到京
- 图--有向无负权回路的单源最短路径 DAG 算法导论p365
- linux中atexit的用法
- Flex快速入门系列之四:idea创建项目以及远程对象访问
- YAML的Java实现——JYAML基本原理与示例(1)导出数据为YAML格式文件
- 指针详解