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

免费搭建购物网站企业营销网站建设系统

免费搭建购物网站,企业营销网站建设系统,个人网站开发是学什么语言,网站推广技术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.laogonggong.com/news/52941.html

相关文章:

  • 自定义投票网站怎么做wordpress猜你喜欢功能
  • 如何做企业黄页网站专业seo网站优化
  • 做网站要买什么类型云空间站长做2个网站
  • 什么是网站主办者seo排名优化推广报价
  • 一站式网站建设与运营昭通网站seo
  • 在阿里巴巴上做网站需要什么软件北京seo服务行者
  • 南昌做网站要多少钱深圳网络推广最新招聘
  • 织梦cms是免费的吗广州网站优化外包
  • 局域网网站域名怎么做google搜索首页
  • 网站建设与维护试卷论文阿里云域名注册官网
  • 网站建设这方面的谷歌广告联盟一个月能赚多少
  • 同一ip网站哪个公司要做网络推广
  • 舟山外贸营销网站建站如何联系百度推广
  • 网站建设自助建站制作广州百度seo代理
  • 婚纱网站源码青岛百度seo排名
  • 怎样做公司的网站网站维护的主要内容
  • 哪家网站建设好seo优化专员工作内容
  • 公司网站兰州建设需要多少钱电商平台开发
  • 自助建站百度最新地址
  • 网站子目录怎么做反向代理设置关键词排名方法
  • 西安网站架设公司学大教育培训机构电话
  • 统一汤达人选择她做汤面活动网站百度一下你就知道百度首页
  • 互联网网站开发的未来方向seo关键词推广多少钱
  • 开办网站需要什么资质推广平台软件有哪些
  • 上海做网站吧网店代运营可靠吗
  • 米拓做的网站如何改代码免费的网络推广平台
  • 外贸网站 沙盒网络营销方法有哪些?
  • 网站描述更改中国职业培训在线
  • 网站制作策划书个人免费建站软件
  • 国内最新新闻热点事件seo网络营销的技术