AS3 IOC框架Spring Actionscript 的使用总结

Spring Actionscript 是众多围绕依赖注入提供解决方案的Flex控制反转框架之一

AS3 下经典的IOC框架有Spring ActionScript、Parsley、Flicc和Swiz,由于我对JAVA spring IOC机制较为熟悉,所以选择了 Spring ActionScript。

主要有XML配置(XML)和注释元数据(Metadata)配置两种方式,下面一一介绍,例子是基于spring AS 2.0.1版本展开的。--流子

1.从Spring Actionscript 主页下载依赖包 

spring-actionscript-core-X.X.X.swc

spring-actionscript-flex-X.X.X.swc

另有as3commons依赖包需要下载。建议下载这个 

Spring Actionscript X.X.X Full (with dependencies and Flex extensions)

2.1 XML配置方式

配置文件application-context.xml

<?xml version="1.0" encoding="UTF-8"?>
<objects xmlns="http://www.springactionscript.org/schema/objects"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springactionscript.org/schema/objects
	http://www.springactionscript.org/schema/objects/spring-actionscript-objects-2.0.xsd">
	<object id="ConfigManager" class="com.yimi.fairy.client.ConfigManager"
		init-method="initialize">
		<!--<constructor-arg ref="authenticationService"/> 构造函数时引入 -->
	</object>
	<object id="RoleManager" class="com.yimi.fairy.client.service.role.RoleManager"
		init-method="initialize">
		<property name="configManager" ref="ConfigManager" />
	</object>
	<object id="ResourceManager" class="com.yimi.fairy.client.res.ResourceManager"></object>
	<object id="JobManager" class="com.yimi.fairy.client.job.JobManager"></object>
	<object id="RoleDataTemplateManager" class="com.service.role.RoleDataTemplateManager">
	<constructor-arg ref="ResourceManager"/> 
	</object>
</objects>

程序载入:

var context:XMLApplicationContext=new XMLApplicationContext("application-context.xml");
context.addEventListener(Event.COMPLETE, this.handleComplete);  
context.load();  

对容器中对象读取:

var configManager:ConfigManager=context.getObject("ConfigManager");
2.2 注释元数据(Metadata)配置方式

优点:把application-context.xml 完全干掉,完全通过注释方式实现。它是对加载进来的SWF文件进行类扫描把[Component] 或者[Configuration] 读取并解析进IOC容器。

首先,要添加编译参数 -keep-as3-metadata+=Component,Invoke,Inject,Autowired
程序载入
var rootViews:Vector.<DisplayObject> = new <DisplayObject>[display];
var context:MetadataApplicationContext= new MetadataApplicationContext(rootViews);
context.addEventListener(Event.COMPLETE, this.handleComplete);
context.load();
对象配置:
[Component(id="roleDataTemplateManager",initMethod="initialize")]
public class RoleDataTemplateManager implements IResourceLoader
{
	[Autowired]
	public var resourceManager:ResourceManager;
	public function initialize():void
	{
		resourceManager.register(this);
	}
}
注意注入进去的对象必须是public,否则注不进去。
对象读取:
var configManager:ConfigManager=context.getObject("configManager");
2.3 如何注入第三方库中的对象
创建一个对象,比如AppConfig
[Configuration]
public final class AppConfig {
	public var stageAutowireProcessor:DefaultAutowiringStageProcessor;
	public var eventHandlerMetadataProcessor:EventHandlerMetadataProcessor;
	public var routeEventsMetadataProcessor:RouteEventsMetaDataProcessor;
	}

Reference:

Spring AS Document

原文链接:http://blog.csdn.net/jiangguilong2000/article/details/9705479

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值