Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3352204
  • 博文数量: 530
  • 博客积分: 13360
  • 博客等级: 上将
  • 技术积分: 5473
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-13 13:32
文章分类

全部博文(530)

文章存档

2017年(1)

2015年(2)

2013年(24)

2012年(20)

2011年(97)

2010年(240)

2009年(117)

2008年(12)

2007年(8)

2006年(9)

分类: Java

2010-04-18 15:33:20

   SwizConfig tag用于配置swiz,其格式如下
      strict="true"
    eventPackages="example.event"
    mediateBubbledEvents="true"
    viewPackages="example.view"
    beanLoaders="{[Beans]}"
    serviceCallFaultHandler="{genericFault}"
    logEventLevel="{LogEventLevel.WARN}"
  />

   strict和eventPackages 与如何处理事件类型相关。
   strict标签的作用是定义哪种动态mediator。如果你设置为false,metadata标签将描述实际的
事件名称,使用这个模式,你可以定义你的mediators如下:
    [Mediate(event="myFooEvent")]
    public function doFoo():...

    正如所见,你定义了一个由事件的名称作为中介,而不是任何一个常量。这个方法并不能让swiz去确认你所描述的事件名在应用系统中已存在。为了避免这个问题,你可以将strict属性设置成true。
   当strict设置成true,在你的mediate metadata/annotation中所描述的事件将在runtime时检查。你必须在eventPackages 属性中设置event package包,多个事件包用逗号隔开。

   根据上面的配置文件,strict被设置成true,而且eventPackages也存在,可以在一个方法上定义一个动态mediator:
    [Mediate(event="FooEvent.FOO")]
    public function doFoo():...
   swiz首先查找类"example.event.FooEvent",因为配置文件中描述了"example.event"。如果能在example.event包里找到FooEvent类并且有事件名常量"FOO",swiz将进行绑定,否则抛出一个错误。

    .如果你设置的mediateBubbledEventstrue,你可以从任一视图中抛出这个事件,swiz将抓住并唤醒所有相关的动态mediaor。其实质是swiz将监听所有的事件以确认任何一个mediate相应的事件类型。如果发现了一个,它将自动通过中心EventDispatcher重新抛出。这就意味着视图不必通过swiz派发事件,或者说与swiz的事件派发特征没有直接的耦合。这个视图可以使用内部dispatchEvent()方法派发标准事件。

    .你可以定义"viewPackages "以优化性能。每次从view package创建一个视图。它将内省[Autowire]和[Mediate]元标签。你可以定义多个view packages,如下所示:
    viewPackages="{['package1', 'package2']}"
    注意:package1和package2仅仅是路径,不能写成"com.user.view.*"

    .对于调用executeServiceCall()错误,你可以在main mxml中定义一个serviceCallFaultHandler方法用作统一错误处理。在上面的配置文件中,如果在你的服务调用过程中出现错误,swiz将运行genericFault()方法

    .swiz使用内部Flex logging API,你也可以定义一个特殊的logEventLevel标识抓住哪一种级别的事件。默认为LogEventLevel.WARN.

参考文献:
1.
阅读(1107) | 评论(0) | 转发(0) |
0

上一篇:服务管理读书笔记

下一篇:swiz IOC容器

给主人留下些什么吧!~~