[發明專利]一種組件構建方法和裝置有效
| 申請號: | 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.szxzyx.cn/pat/books/200910091882.6/2.html,轉載請聲明來源鉆瓜專利網。





