Spring ActionScript对于Module的支持
Spring ActionScript对于Module开发有无支持?
一般在小规模的RIA应用中,所需的配置量也很少,我们直接写一个XML配置文件,一次性载入就可以了。但如果涉及到大规模应用,比如在Flex项目开发中,会将若干模块做成Flex Module来实现模块的分离,这样因为主应用和Module的加载时间不一致,势必导致我们需要为他们各自编写独立的XML配置(这种情况也适用于我们开发Flash项目,分为多个SWF进行加载)。那么Spring ActionScript对此有无支持呢?答案是肯定的,Spring ActionScript作为一个成熟的解决方案,也考虑到了这个因素,这也是Spring ActionScript在社区大受欢迎的原因。
使用Application上下文和Module上下文
假设这样一个情景,有两个上下文。一个是在主应用中创建的,另一个则是在需要延迟加载的模块中创建的。第一个我们称之为Application上下文,另一个称之为Module上下文。
现在假设Application上下文的配置如下:
<objects> <object class="com.myclasses.MyObject" id="myObject" scope="singleton"/> <object class="com.myclasses.MyOtherObject" id="myOtherObject" scope="prototype"/> </objects>
Module上下文的配置如下:
<objects> <object class="com.myclasses.moduleimplementations.MyOtherObject" id="myOtherObject" scope="prototype"/> </objects>
当Module上下文创建的时候,我们设置Application上下文为它的父级(parent):
var moduleContext:XMLApplicationContext = new XMLApplicationContext("module-context.xml"); moduleContext.parent = applicationContext;
这样做的结果就是,当你在Application上下文中请求一个id是myOtherObject的对象,你会得到一个类型是com.myclasses.MyOtherObject的实例。然而,当你是在Module上下文中请求同一个对象,你会得到一个类型是com.myclasses.moduleimplementations.MyOtherObject的实例。
下面,我们稍微更改一下两个配置,添加一些依赖并展示如何在Module上下文中覆写这些依赖。
Application上下文的配置:
<objects> <object class="com.myclasses.MyObject" id="myObject" scope="singleton"/> <object class="com.myclasses.MyOtherObject" id="myOtherObject" scope="prototype"> <property name="dependency" ref="myDependency"/> </object> <object class="com.dependencies.MyDependency" id="myDependency"/> </objects>
现在从Application上下文中请求id是myOtherObject的对象,你会得到一个类型是com.myclasses.MyOtherObject的实例,和它的依赖(类型是com.dependencies.MyDependency).然后我们更改Module上下文的配置如下:
<objects> <object class="com.moduledependencies.MyDependency" id="myDependency"/> </objects>
当我们再次从Module上下文中请求id是myOtherObject的对象,我们会得到类型是com.myclasses.MyOtherObject的实例,它的依赖则变成了类型是com.moduledependencies.MyDependency的一个实例。
注意:像这样的重写引用对象,前提条件是对象的scoped属性设置为prototype。
重写外部属性值也将遵循同样的逻辑(即更改value而不是ref),所以你是可以更改从父级的上下文中获得的属性的。
如果Application上下文中有一个外部配置的属性叫做prop1,你可以在Module上下文中引用:
<objects> <object class="com.moduleclasses.MyObjectWithAProperty" id="myObjectWithAProperty"> <property name="myProperty" value="{$prop1}"/> </object> </objects

.gif)
.gif)




.gif)
原来对spring
原来对spring ActionScript有顾虑就是怕对模块支持不好,现在放心了。
有module的支持后,的
有module的支持后,的确会更好用
riameeting终于开始讲一些有深度的框架内容了。
感谢分享
感谢分享
发表新评论