Parsley 依赖注入实例
Web

Parsley 依赖注入实例

Flying
2013-08-18 / 0 评论 / 124 阅读 / 正在检测是否收录...

Parsley 很强大,文档 API 也很丰富,不过网上完整实例太少了。因此我决定结合 Parsley 文档,用简单实例来讲述 Parsley 的特性。Parsley 支持 Flash 和 Flex,当然更常见的是使用 Parsley 开发 Flex 企业应用,我们也主要以讲解 Parsley Flex 的用法为主。至于 Parsley Flash 的用法,大家可参考官方文档。本文将用一个类似 HelloWorld 的简单实例讲述创建 Parsley Flex 应用的基本流程以及 Parsley 的依赖注入。如果你使用 Flash,你要去看一下相应文档和 API。

基本流程

  1. 添加框架 SWCs

开始用 Parsley 开发首先你需要添加一些 SWCs 到你的下。先下载 Parsley Core 并从 release 和相关的文件夹下添加所需要的 SWCs 到你的构建路径下。你会在下载的 Zip 文件的 release 文件夹下找到它们。如下图所示:

classpath.gif

  1. 定义对象依赖

这可能是 Parsley 使用最频繁的特性。依赖关系可以用元数据标签、MXML、XML 或者编程来配置。最简单的是使用 [Inject] 元数据标签,你可以在属性上使用它,如本实例的代码片段:

[Inject]
public var sharedModel:SharedModel;

Parsley 读到 [Inject] 之后会在当前的上下文中查找是否有托管的对象匹配这里的 SharedModel 类型,如果有它就把托管的对象赋值(注入)给这个变量。

  1. 托管对象

在你给类添加元数据标签后,你必须告诉容器哪些对象应该管理。在 Flex 中用得最多的是使用 MXML/XML 配置。你可以创建一个简单的 MXML 类,然后添加所有你希望被 Parsley 管理的类,一般都是模型类。如本实例的代码片段:

<?xml version="1.0" encoding="utf-8"?>
<parsley:Objects xmlns:fx="http://ns.adobe.com/mxml/2009" 
  xmlns:parsley="http://www.spicefactory.org/parsley" xmlns:model="model.*">
    <fx:Declarations>
      <model:SharedModel/>
    </fx:Declarations>
</parsley:Objects>

SharedModel 可以是你希望托管的任何对象类型。每个托管对象将由 Parsley 管理,这样就可以使用 Parsley 框架的所有功能,包括消息传递、自动的创建销毁、注入等。

装配视图

Parsley 不知道视图的注入点,除非我们直接告诉它。要做到这一点,需要将视图直接装配到它的上下文中。最简单的方式就是使用 <Configure /> 标签,该标签表明这个视图是要用 Parsley 管理的。它会触发一个冒泡事件,Parsley 接收到这个事件才会执行对视图的一系列处理。否则注入不会生效。如本实例中的 SenderView 和 ReceiverView 都添加了 <Configure /> 标签。

初始化框架

现在,你已经用元数据配置类并且装配到视图中,终于到初始化它的时间了。幸运的是,在大多数情况下,这只需要使用一行代码或一个简单的标签。如本实例的代码片段:

<fx:Declarations>
  <parsley:ContextBuilder config="{AppConfig}"/>
</fx:Declarations>

这就是所有的东西。可以把标签写到任何一个你希望作为上下文的根视图中。在本实例中我们把标签写到 MXML 入口程序中,其实是创建了 application 级别的 singleton 对象。标签有一些选项,最重要的是 config 选项,它用来指示配置文件的位置。本实例 config 文件是一个用来描述托管对象的 MXML 配置文件。使用 MXML 有一个好处是托管对象一定会被装配到最终的 swf 中。本实例的工程结构应该是这样的:

inject-project.gif

点击此处 下载该实例的源码。

注意要点

  • Parsley 除了属性依赖注入,还支持构造方法和普通方法注入。对方法使用 [Inject] 元数据标签可以一次声明多个依赖关系。
  • 要使注入生效,被注入的属性方法必须是 public 的。
  • 如果 Parsley 通过对象 ID 选择依赖,配置文件中托管对象必须设置唯一的相应 ID。通常 [Inject] 元数据标签更适用于通过类型注入,而不是通过 ID 注入,但对于 RemoteObject 是个例外。
  • 依赖注入是需要时间的,注入的对象可能不能立即使用。甚至在视图 creationComplete 事件发生后,你的托管对象可能仍然是空的。所以需要使用 [Init] 元数据标签来指定完成注入后要执行的回调方法。
  • 可以让 Parsley 自动装配视图而不需要使用 <Configure> 标签,我们稍后的时候再介绍。

参考文档

要更多了解 Parsley 依赖注入,请查看 Parsley 文档相应部分

8

评论 (0)

取消