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

济南 网站建设 域名注册金华seo全网营销

济南 网站建设 域名注册,金华seo全网营销,上海网页设计公司费用,新浪网 网站建设1.什么是Bean的循环依赖? 简单来说就是在A类中,初始化A时需要用到B对象,而在B类中,初始化B时需要用到A对象,这种状况下在Spring中,如果A和B同时初始化,A,B同时都需要对方的资源&…

1.什么是Bean的循环依赖?

        简单来说就是在A类中,初始化A时需要用到B对象,而在B类中,初始化B时需要用到A对象,这种状况下在Spring中,如果A和B同时初始化,A,B同时都需要对方的资源,就会僵持不下。这也就是Spring中的循环依赖问题。Spring框架对这种属性所产生的循环依赖的解决办法很简单,就是使用@Autowired注解,如下:

public class BeanA {@Autowiredprivate BeanB beanB;
}public class BeanB {@Autowiredprivate BeanA beanA;
}

        对于构造方法的循环依赖,Spring可采用@Lazy或者使用Setter()方法去解决,这里我们不做讨论。

2.@Autowired

        在Spring中,我们可以使用@Autowired注解对属性或者方法参数进行标注,会从IOC容器中拿到对应的实例自动注入。

3.解决循环依赖的具体细节

        首先,Spring中内部有三大缓存,在 DefaultSingletonBeanRegistry 类中定义了 3 个 Map 对象充当缓存。分别是:

  • singletonObjects:一级缓存,用于保存实例化,初始化完成之后的Bean实例,ConcurrentHashMap存储,线程安全。
  • earlysingletonObjects:二级缓存,用于保存实例化完成,还未初始化完的Bean实例,属于提前暴露。
  • singleFactories:三级缓存,存放生成Bean的工厂,也相当是存放了获取Bean的一个回调方式。

        具体实现:

先把创建A的工厂,存入到三级缓存中,之后A进行实例化,实例化之后需要属性赋值B, 然后再一级、二级、三级缓存中找B,如果都没有,将创建B的工厂存入到三级缓存,之后B进行实例化,B实例化后需要属性赋值A,所以就去三级缓存中利用创建A的工厂回调拿到A,之后B的属性赋值完毕,然后将拿到的A存放到二级缓存中,并删除三级缓存中A的工厂,等到B整体初始化完毕,将B放入一级缓存,然后A的属性赋值B也完成,等到A整体初始化完毕,则将A存放到一级缓存中,并删除二级缓存的A。

        

http://www.hkea.cn/news/928521/

相关文章:

  • 做音乐网站赚钱吗做小程序的公司
  • 坪地网站建设域名流量查询工具
  • 网站建设部署万能推广app
  • 网站的重要性怎么做个网站
  • 做网站的经验百度旗下有哪些app
  • 化工网站开发推广点击器
  • 怎么访问日本竹中建设网站外贸seo推广
  • 惠阳建设局网站引流推广接单
  • 北京通州网站建设公司如何建立公司网站网页
  • 网站换程序301seo优化按天扣费
  • html5 网站自适应长尾关键词挖掘爱站工具
  • 网站设计公司(信科网络)潍坊网站定制模板建站
  • 番禺网站开发报价百度竞价排名软件
  • 做企业网站接单seo网站优化技术
  • 建设网站行业云网络推广理实一体化软件
  • 如何用自己公司网站做邮箱关键字是什么意思
  • 古典网站建设欣赏马鞍山网站seo
  • 商城网站建设报价方案免费建网站软件下载
  • 中国做美国酒店的网站好竞价托管收费标准
  • 网站开发与设计静态网页源代码站长之家app下载
  • 松原做网站app运营推广是干什么
  • 做简单的网站链接2024新闻热点摘抄
  • 百度网站站长环球网疫情最新
  • 颍上做网站西安seo网站关键词优化
  • 有没有兼职做设计的网站吗知名网络软文推广平台
  • 数据百度做网站好用吗米拓建站
  • 网站维护运营怎么做搜索引擎优化通常要注意的问题有
  • 圆梦科技专业网站建设恶意点击软件有哪些
  • 如何做vip电影解析网站竞价恶意点击器
  • 开发简单小程序公司深圳网站优化哪家好