[发明专利]一种组件构建方法和装置有效
申请号: | 200910091882.6 | 申请日: | 2009-09-01 |
公开(公告)号: | CN101639775A | 公开(公告)日: | 2010-02-03 |
发明(设计)人: | 何冠宇 | 申请(专利权)人: | 用友软件股份有限公司 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 北京市隆安律师事务所 | 代理人: | 权鲜枝 |
地址: | 100094北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 组件 构建 方法 装置 | ||
技术领域
本发明涉及软件技术领域,特别是涉及一种支持循环依赖的组件构建方法 和装置。
背景技术
面向组件的开发是面向服务开发的基础,随着SOA(面向服务的体系结构) 的推进,系统的组件化过程要求越来越迫切。基于这种需求,大规模软件系统 越来越需要一个支持组件化思想的开发、运行和管理框架,而组件之间的关系 管理是这一框架的基本功能。组件之间关系的建立,目前主流的技术都是采用 依赖注射(DI:Dependency Injection)的方式实现。按照依赖注射的作用点,其主 要分为创建注射和属性注射。创建注射指在创建组件时建立组件之间的关系, 而属性注射指在组件创建完成后通过组件的属性建立组件之间的关系。无论是 创建注射还是属性注射,在一个复杂的组件关系中不可避免的可能存在依赖环 路。
然而,现有的组件系统尚不能安全可靠的支持组件之间的循环依赖关系, 存在不能成功地构建具有循环依赖关系的组件的问题。这样的系统大大约束了 组件系统设计开发的模式,限制了具有复杂组件关系的软件系统的设计开发灵 活度,从而大大影响了软件系统的设计开发效率。
发明内容
本发明提供一种组件构建方法和装置,能够正确的构建出循环依赖环路中 的组件。
为了达到上述目的,本发明的技术方案是这样实现的:
一种组件构建方法,该方法包括:
A、确定循环依赖环路中作为切割点的第一组件;
B、为作为切割点的第一组件创建对应的临时组件;
C、利用第一组件对应的临时组件,构建循环依赖环路中依赖于第一组件的 第二组件;
D、从第二组件开始,按照被依赖关系依次构建循环依赖环路中的其他组件, 直至第一组件构建完成;
E、利用第一组件更新第二组件的构建信息。
所述步骤A包括:
在一个构建线程中,在每一个组件被请求构建时,判断该组件是否是第一 次被请求构建,如果是第一次被请求构建,则继续判断该组件是否存在依赖的 组件,如果存在,则请求构建该依赖的组件,返回步骤A;如果不是第一次被请 求构建,则确定存在循环依赖环路,并将该组件确定为循环依赖环路中作为切 割点的第一组件。
所述步骤A包括:将循环依赖环路中的任意一个组件确定为所述第一组件。
当所述依赖为创建依赖时,所述步骤E包括:遍历第二组件的所有字段,使 用第一组件替换遍历到的每一个所述临时组件;
当所述依赖为属性依赖时,所述步骤E包括:以第一组件作为参数,调用第 二组件的属性设置方法,把第二组件中的依赖属性的值从所述临时组件替换为 第一组件。
该方法进一步包括:根据依赖关系的特点所需要的补偿逻辑,预先设置针 对创建依赖的第一类型回调函数和针对属性依赖的第二类型回调函数;
在步骤B中,进一步包括:在第一组件对应的临时组件中设置对应当前依赖 关系的回调函数注册接口;
在步骤C中进一步包括:所述第二组件利用所述临时组件中的回调函数注册 接口,注册第一类型回调函数或第二类型回调函数;
通过调用第二组件注册的第一类型回调函数或第二类型回调函数执行所述 步骤E。
该方法进一步包括:每一个组件在构建时获取了其依赖的组件,判断获取 到的组件是否是临时组件,如果是临时组件,则将所获取的临时组件的信息、 该构建的组件的信息以及对应的补偿方式信息登记到预先设置的补偿组件列表 中;
第二组件利用补偿组件列表中与其对应的临时组件信息和补偿方式信息, 执行所述步骤E。
所述步骤B进一步包括:在临时组件中创建补偿信息表;
所述步骤C进一步包括:将依赖于该临时组件的第二组件以及其与临时组件 的依赖关系登记在临时组件的补偿信息表中;
对登记在临时组件的补偿信息表中的第二组件,根据登记的依赖关系是创 建依赖还是属性依赖执行所述步骤E。
当所述第一组件以接口形式对外提供服务时,所述步骤B包括:按照动态代 理方法,产生继承所述第一组件所有暴露的接口的类,该类不包括依赖信息, 将产生的该类作为所述第一组件对应的临时组件;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于用友软件股份有限公司,未经用友软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910091882.6/2.html,转载请声明来源钻瓜专利网。