?bboss項目下載列表 在sourceforge訪問地址為:
https://sourceforge.net/project/showfiles.php?group_id=238653
?
?
前兩節(jié)介紹了 bboss aop 框架的兩種依賴注入方式:屬性依賴注入和構(gòu)造函數(shù)依賴注入。這一節(jié)介紹一下 bboss aop 框架防止循環(huán)依賴注入的功能。
在介紹防止循環(huán)依賴注入之前,我們首先介紹一下 java 組件中的屬性循環(huán)引用的情況。所謂循環(huán)引用就是說組件之間相互引用,導(dǎo)致循環(huán)引用,例如:
對象 A 引用了對象 B ,對象 B 引用對象 C ,對象 C 引用了對象 A ,這樣就形成了一種循環(huán)引用的場景。
?
使用 bboss aop 框架的依賴注入功能時,應(yīng)用避免出現(xiàn)業(yè)務(wù)組件的循環(huán)依賴注入的情況, bboss aop 能夠有效的防止這種情況的出現(xiàn),一旦開發(fā)人員配置了這種場景,應(yīng)用程序通過 com.chinacreator.spi.BaseSPIManager 的 getProvider 方法獲取業(yè)務(wù)組件的實例時將拋出異常:
throw new CurrentlyInCreationException( "loop inject error the inject context path is [A>B>C>A]" );
明確地提示出現(xiàn)了 A>B>C>A 的循環(huán)依賴注入。
這種情況的配置示例如下:
<? 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 方法和構(gòu)造函數(shù)中出現(xiàn)循環(huán)引用應(yīng)該防止外,情況出現(xiàn)循環(huán)引用是允許的。
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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