?bboss項目下載列表 在sourceforge訪問地址為:
https://sourceforge.net/project/showfiles.php?group_id=238653
?
?
前兩節介紹了 bboss aop 框架的兩種依賴注入方式:屬性依賴注入和構造函數依賴注入。這一節介紹一下 bboss aop 框架防止循環依賴注入的功能。
在介紹防止循環依賴注入之前,我們首先介紹一下 java 組件中的屬性循環引用的情況。所謂循環引用就是說組件之間相互引用,導致循環引用,例如:
對象 A 引用了對象 B ,對象 B 引用對象 C ,對象 C 引用了對象 A ,這樣就形成了一種循環引用的場景。
?
使用 bboss aop 框架的依賴注入功能時,應用避免出現業務組件的循環依賴注入的情況, bboss aop 能夠有效的防止這種情況的出現,一旦開發人員配置了這種場景,應用程序通過 com.chinacreator.spi.BaseSPIManager 的 getProvider 方法獲取業務組件的實例時將拋出異常:
throw new CurrentlyInCreationException( "loop inject error the inject context path is [A>B>C>A]" );
明確地提示出現了 A>B>C>A 的循環依賴注入。
這種情況的配置示例如下:
<? xml version = "1.0" encoding = 'gb2312' ?>
< manager-config >
??? < manager id = "a" singlable = "true" >
??????
?????? < provider type = "DB"
?????????? class = "com.chinacreator.spi.reference.A" />
?????? < reference fieldname = "b" refid = "b" />
??????
??????
??? </ manager >
???
???
??? < manager id = "b" singlable = "false" >
?????? < provider type = "DB"
?????????? class = "com.chinacreator.spi.reference.B" />
?????? < reference fieldname = "c" refid = "c" />
??? </ manager >
??? < manager id = "c" singlable = "false" >
??????
?????? < reference fieldname = "a" refid = "a" />
?????? ?
?????? < provider type = "DB"
?????????? class = "com.chinacreator.spi.reference.C" />
??? </ manager >
</ manager-config >
?
一般情況下只有在依賴的注入的 setter 方法和構造函數中出現循環引用應該防止外,情況出現循環引用是允許的。
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
