注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

麦斯·渐行渐远

人无远虑,必有近忧

 
 
 

日志

 
 

PureMVC + Spring Actionscript  

2009-03-25 02:26:30|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

今天第一次尝试将Spring Actionscript和PureMVC结合开发,折腾到现在才最终搞定。

详细过程以后再写,耽误了这么久的原因是继承自Facade的ApplicationFacade的getInstance函数返回总是为null,由于这个函数是ApplicationFacade的工厂函数,所以导致了spring装配失败。

这个函数的写法是完全按照官方宣称的办法书写的,独立执行起来一点问题都没有,但是只要一放到spring里面就会挂掉。非常奇怪。

后来逐步跟踪,发现是PureMVC的一个bug:这个函数能够按照预期的目的正确执行和返回的前提是这个函数一定要在Model、Control、View其他类在实例化之前执行一次,否则ApplicationFacade里面的instance成员的类型会是Facade,而不是ApplicationFacade,所以在返回instance as ApplicationFacade肯定会是null了。

主要原因就出在PureMVC的设计,在某些类(例如Notifier)的定义里面,有如下的代码:

 protected var facade:IFacade = Facade.getInstance();

 可以看出来,如果这个函数先于ApplicationFacade.getInstance()执行的话,Facade的instance成员肯定就是Facade类型,而不是ApplicationFacade类型了。

而spring管理的facade往往不一定是最先实例化的(在facade里面存在对Proxy等的依赖的情况下),这样等轮到ApplicationFacade实例化的时候,getInstance工厂方法肯定就只能返回null了,spring也就只能挂掉了。

解决的办法就是在创建容器之前先实例化ApplicationFacade一次,因为ApplicationFacade是单例的,所以这样做是没有什么问题的。就是代码看上去稍微有点恶心。。。。

 ApplicationFacade.getInstance();
context = new XMLApplicationContext([
"application-context-main.xml",
"application-context-view.xml",
"application-context-model.xml"
]);
  评论这张
 
阅读(1736)| 评论(5)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017