当前位置: 首页 > news >正文

丽水品牌网站设计最火的推广平台

丽水品牌网站设计,最火的推广平台,供应链管理师证书有用吗,山东省住房和城乡建设厅官网查询什么是Bean的循环依赖 A对象中有B属性。B对象中有A属性。这就是循环依赖。我依赖你,你也依赖我。 比如:丈夫类Husband,妻子类Wife。Husband中有Wife的引用。Wife中有Husband的引用。 Spring解决循环依赖的机理 Spring为什么可以解决set s…

什么是Bean的循环依赖

A对象中有B属性。B对象中有A属性。这就是循环依赖。我依赖你,你也依赖我。

比如:丈夫类Husband,妻子类Wife。Husband中有Wife的引用。Wife中有Husband的引用。

Spring解决循环依赖的机理

Spring为什么可以解决set + singleton模式下循环依赖?

根本的原因在于:这种方式可以做到将“实例化Bean”和“给Bean属性赋值”这两个动作分开去完成。

实例化Bean的时候:调用无参数构造方法来完成。此时可以先不给属性赋值,可以提前将该Bean对象“曝光”给外界。

给Bean属性赋值的时候:调用setter方法来完成。

两个步骤是完全可以分离开去完成的,并且这两步不要求在同一个时间点上完成。

也就是说,Bean都是单例的,我们可以先把所有的单例Bean实例化出来,放到一个集合当中(我们可以称之为缓存),所有的单例Bean全部实例化完成之后,以后我们再慢慢的调用setter方法给属性赋值。这样就解决了循环依赖的问题。

Spring框架底层源码级别上是如何实现的:

在以上类中包含三个重要的属性:

*Cache of singleton objects: bean name to bean instance.* 单例对象的缓存:key存储bean名称,value存储Bean对象【一级缓存】

*Cache of early singleton objects: bean name to bean instance.* 早期单例对象的缓存:key存储bean名称,value存储早期的Bean对象【二级缓存】

*Cache of singleton factories: bean name to ObjectFactory.* 单例工厂缓存:key存储bean名称,value存储该Bean对应的ObjectFactory对象【三级缓存】

这三个缓存其实本质上是三个Map集合。

我们再来看,在该类中有这样一个方法addSingletonFactory(),这个方法的作用是:将创建Bean对象的ObjectFactory对象提前曝光。

再分析下面的源码:

从源码中可以看到,spring会先从一级缓存中获取Bean,如果获取不到,则从二级缓存中获取Bean,如果二级缓存还是获取不到,则从三级缓存中获取之前曝光的ObjectFactory对象,通过ObjectFactory对象获取Bean实例,这样就解决了循环依赖的问题。

Spring只能解决setter方法注入的单例bean之间的循环依赖。

ClassA依赖ClassB,ClassB又依赖ClassA,形成依赖闭环。

Spring在创建ClassA对象后,不需要等给属性赋值,直接将其曝光到bean缓存当中。

在解析ClassA的属性时,又发现依赖于ClassB,再次去获取ClassB,当解析ClassB的属性时,又发现需要ClassA的属性,但此时的ClassA已经被提前曝光加入了正在创建的bean的缓存中,则无需创建新的的ClassA的实例,直接从缓存中获取即可。从而解决循环依赖问题。  

http://www.ds6.com.cn/news/75273.html

相关文章:

  • 做网站的公司周年活动微信视频号可以推广吗
  • 做外贸一定要独立网站吗怎么建立一个自己的网站
  • 做网站用的书线上推广方式有哪些
  • php网站优点钦州seo
  • java开发企业网站开发文档友情链接购买平台
  • 星巴克网站开发票吗武汉seo排名优化公司
  • 网站建设试题及答案百度seo技术优化
  • 常州哪家做网站便宜seo网站关键词排名快速
  • 在excel表里做网站模板深圳优化公司哪家好
  • 网站建设 军报数据分析网页
  • 武汉人才市场sem和seo有什么区别
  • 学校门户网站建设方案西安百度关键词排名服务
  • 网站负责人办理幕布或站点拍照seo搜索引擎优化步骤
  • 家装品牌排行榜前十名曹操论坛seo
  • 广州地铁最新运营调整广告优化师是做什么的
  • 制冷 网站建设 中企动力接广告的网站
  • 网站开发 后端返回前端一个地址 有什么用站长统计app软件
  • 机械网站建设多少钱谷歌浏览器官网下载安装
  • 网站建设制作设计营销公司南宁磁力岛
  • 最新b2b网站搜索引擎优化
  • 建设网站教程视频视频企业整站推广
  • 做兼职哪个网站比较好站长之家最新网站
  • 四网合一网站建设怎么优化百度关键词
  • 兰州网站推什么叫优化
  • 小程序定制开发流程广州seo推荐
  • 国外订房网站怎么和做商务网站如何推广
  • 周口学做网站微博营销软件
  • 昌乐营销型网站建设seo关键词平台
  • 有没有教做帽子的网站seo入门版
  • 东莞做网站公司哪家比较好百度站长平台电脑版