问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

spring event事件是并行执行吗

发布网友 发布时间:2022-07-20 07:23

我来回答

1个回答

热心网友 时间:2023-10-20 11:51

首先说起EventBus,有过框架使用经验的朋友应该不会陌生。EventBus提供了一种有效的事件托管机制,以解决我们在项目开发中遇到的事件触发与捕获方面的困扰:基于FlashPlayer的事件冒泡机制严重依赖显示列表,在MVC架构中,很多类并非显示类,难以依赖冒泡机制。如何在各个类之间简单高效的传递事件,而又要尽量避免高耦合,是个难以解决的问题。SpringActionScript中也提供了EventBus的机制,而且它可以结合MetadataTag实现事件托管,尽量维持代码编写的优雅。让我们来看一个简单的例子:首先我们需要在XML配置中增加两个对象,它们将完成事件托管的功能实现。EventHandlerMetaDataPostProcessor类将根据Metadata标注确认哪些方法将用于事件侦听,而RouteEventsMetaDataPostProcessor将完成事件托管,即委托托管的类派发的事件交由EventBus处理然后我们在主代码中加载配置文件,这个过程与我们之前使用SpringActionScript的方式相同:package{importflash.display.DisplayObject;importflash.display.Sprite;importorg.springextensions.actionscript.context.support.XMLApplicationContext;importtest.ClassRef;publicclassEventBusTestextendsSprite{[Embed(source="config/application_context.xml",mimeType="application/octet-stream")]publicvarview:Class;publicvarapplicationContext:XMLApplicationContext;publicfunctionEventBusTest(){newClassRef;applicationContext=newXMLApplicationContext();applicationContext.addEmbeddedConfig(view);applicationContext.load();addChild(applicationContext.getObject("a")asDisplayObject);addChild(applicationContext.getObject("b")asDisplayObject);}}}然后有两个类A和B,注意A中将派发事件,交由EventBus托管,EventBus将执行B中的Handler,执行相应的操作,整个过程非常优雅的实现了松耦合,A和B彼此都不知道对方的存在,甚至也不需要知道EventBus的存在。A的代码,注意我们使用了[RouteEvents]来标注哪些事件将被托管:packagetest{importflash.display.Sprite;importflash.events.MouseEvent;[RouteEvents][Event(name="move",type="test.TestEvent")]publicclassAextendsSprite{publicfunctionA(){super();this.graphics.beginFill(0x000000,1);this.graphics.drawRect(0,0,100,100);this.graphics.endFill();x=10;y=10;addEventListener(MouseEvent.CLICK,startMove);}privatefunctionstartMove(e:MouseEvent):void{trace("Aclicked");varsEvt:TestEvent=newTestEvent(TestEvent.MOVE);sEvt.speed=10;dispatchEvent(sEvt);}}}B的代码,注意我们使用了[EventHandler(name="move")]来确定哪个事件将被后面的方法处理,注意该方法必须是Public的:packagetest{importflash.display.Sprite;publicclassBextendsSprite{publicfunctionB(){super();this.graphics.beginFill(0xFF0000,1);this.graphics.drawRect(0,0,100,100);this.graphics.endFill();x=110;y=10;}[EventHandler(name="move")]publicfunctiontrackHandler(e:TestEvent):void{x+=e.speed;trace("Bmove:"+e.speed);}}}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
天秤男吃醋的八大表现 天秤座男生吃醋时的表现 人工授精之后注意什么 人授后需要卧床休息吗 ...经两个月没发工资了,我不想干了,老板不给钱怎么办? 新手玩《兰斯10》这款游戏的快速通关攻略是什么? 兰斯10怎么用食券快速刷SSR 兰斯10二周目7cp怎么达成 兰斯10大侵攻达成条件介绍 跳舞同手同脚叫什么来着 喷油嘴清洗机主要功能 申请林木种子生产经营许可证的应具备哪些条件 国民经济管理专业毕业的学生能做什么工作?这个专业是否比较吃香? 求职要做哪些准备 请问家里用的普通日光灯镇流器和吸顶荧光灯的镇流器能通用吗?(功率一样) 遇到小黄车被破坏怎么做才好?能举报给ofoofo或者有关部门么? 世界弹射物语被动12是什么意思 常遇春身强力壮立功无数,为什么会在朱元璋上位之后突然暴卒? 常遇春死的时候明朝建立了吗?常遇春的死和朱元璋有关系吗? 赛尔号伯恩尼速度刷啥精灵 赛尔号伯恩尼刷啥 赛尔号的伯恩尼推荐技能是什么? 左手戴玉手镯,右手戴金手链,会影响运气吗? 谈论的成语 带谈论的成语有那些 PHP圆形进度条怎么做 设置手机桌面语音天气。 最美天气语音播放如何使用 扬所欲言是什么意思 烧脑作文的内容有吗? 中译英。把这句中文翻译成英文。我的翻译的语法是否正确?以及是否更偏向口语化? 驾驶员换证体检哪里做? 排插火线零线随便接吗 什么时候可以给宝宝打提高免疫力的针 这种插排,零线火线分别接到哪个孔? 如何创新思维营销? 让人欲罢不能的小零食,你心动了吗 天猫魔盒数娱礼包激活码在哪 厄裴流思q中后怎么快速a到 Q中病毒!怎么办? Q中了病毒怎么办? 直接用无花果能种出无花果树吗? 南昌融创乐园竹林绿蟒晚上几点不能玩 至神繁体字 如何用肉眼识别翡翠? 有什么让你欲罢不能耽美漫画吗? 硅胶发泡条和硅胶条之间那个的柔韧性更好,弹性更好 柴暖电路板烧了能修吗 一个鸡蛋和半斤牛奶哪个更有营养呢? ps这个是什么滤镜或者怎么处理的 逢简水乡怎么去,在芳村客运站