bboss aop 实践(4) 防止循环依赖注入

系统 1636 0

 bboss项目下载列表 在sourceforge访问地址为:
https://sourceforge.net/project/showfiles.php?group_id=238653  

 

前两节介绍了 bboss aop 框架的两种依赖注入方式:属性依赖注入和构造函数依赖注入。这一节介绍一下 bboss aop 框架防止循环依赖注入的功能。

在介绍防止循环依赖注入之前,我们首先介绍一下 java 组件中的属性循环引用的情况。所谓循环引用就是说组件之间相互引用,导致循环引用,例如:

对象 A 引用了对象 B ,对象 B 引用对象 C ,对象 C 引用了对象 A ,这样就形成了一种循环引用的场景。

 

  bboss aop 实践(4) 防止循环依赖注入

使用 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 方法和构造函数中出现循环引用应该防止外,情况出现循环引用是允许的。

 

bboss aop 实践(4) 防止循环依赖注入


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论