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

福建参观禁毒展览馆的网站建设百度平台客服联系方式

福建参观禁毒展览馆的网站建设,百度平台客服联系方式,英文网站制作 官网,如何建设机器人教育网站什么是循环依赖 ? 一个或多个对象之间存在直接或间接的依赖关系,这种依赖关系构成一个环形调用,有下面 3 种方式。 我们看一个简单的 Demo,对标“情况 2”。 Service public class Louzai1 {Autowiredprivate Louzai2 louzai2;…

在这里插入图片描述

什么是循环依赖 ?

一个或多个对象之间存在直接或间接的依赖关系,这种依赖关系构成一个环形调用,有下面 3 种方式。
在这里插入图片描述
我们看一个简单的 Demo,对标“情况 2”。

@Service
public class Louzai1 {@Autowiredprivate Louzai2 louzai2;public void test1() {}
}@Service
public class Louzai2 {@Autowiredprivate Louzai1 louzai1;public void test2() {}
}

这是一个经典的循环依赖,它能正常运行,后面我们会通过源码的角度,解读整体的执行流程。

三级缓存

解读源码流程之前,spring 内部的三级缓存逻辑必须了解,要不然后面看代码会蒙圈。

第一级缓存:singletonObjects,用于保存实例化、注入、初始化完成的 bean 实例;
第二级缓存:earlySingletonObjects,用于保存实例化完成的 bean 实例;
第三级缓存:singletonFactories,用于保存 bean 创建工厂,以便后面有机会创建代理对象。
这是最核心,我们直接上源码:
在这里插入图片描述
执行逻辑:

先从“第一级缓存”找对象,有就返回,没有就找“二级缓存”;
找“二级缓存”,有就返回,没有就找“三级缓存”;
找“三级缓存”,找到了,就获取对象,放到“二级缓存”,从“三级缓存”移除。

原理执行流程

我把“情况 2”执行的流程分解为下面 3 步,是不是和“套娃”很像 ?
在这里插入图片描述
整个执行逻辑如下:

1、在第一层中,先去获取 A 的 Bean,发现没有就准备去创建一个,然后将 A 的代理工厂放入“三级缓存”(这个 A 其实是一个半成品,还没有对里面的属性进行注入),但是 A 依赖 B 的创建,就必须先去创建 B;
2、在第二层中,准备创建 B,发现 B 又依赖 A,需要先去创建 A;
3、在第三层中,去创建 A,因为第一层已经创建了 A 的代理工厂,直接从“三级缓存”中拿到 A 的代理工厂,获取 A 的代理对象,放入“二级缓存”,并清除“三级缓存”;
4、回到第二层,现在有了 A 的代理对象,对 A 的依赖完美解决(这里的 A 仍然是个半成品),B 初始化成功;
5、回到第一层,现在 B 初始化成功,完成 A 对象的属性注入,然后再填充 A 的其它属性,以及 A 的其它步骤(包括 AOP),完成对 A 完整的初始化功能(这里的 A 才是完整的 Bean)。
6、将 A 放入“一级缓存”。

Spring Bean的生命周期

getBean(a)–>实例化A–>属性注入–>初始化A–>销毁

三级缓存的作用:

singletonObjects(一级缓存):存放实例化–>代理–>属性注入–>初始化后的对象
earlySingletonObjects(二级缓存):存放实例化–>代理–>属性注入后的对象
singletonFactories(三级缓存):存放对象工厂,可以从对象工厂中拿到还未属性注入的对象(对象工厂便于创建代理对象)
当未添加三级缓存时候:
在这里插入图片描述
当加入三级缓存后:
在这里插入图片描述

http://www.hotlads.com/news/5767.html

相关文章:

  • 网站开发和app开发的区别软文营销案例文章
  • 做设计一般用什么素材网站温州seo服务
  • 天津响应式网站设计郑州seo优化大师
  • 深圳网站设计 建设首选深圳市seo优化网络公司排名
  • 九江做网站哪家便宜培训网络营销机构
  • 怎么可以找到做公益的网站百度seo刷排名网址
  • 如何做公司网站推广个人如何推广app
  • 寻找移动网站建设网络营销软件商城
  • 三亚网站建设平台日照seo优化
  • 石家庄免费建站seo推广培训中心
  • 吴桥做网站价格湖南关键词优化快速
  • 酒类产品网站设计seo网站结构优化
  • 微信上的微网站在哪里外贸网站建设设计方案
  • 网站用什么语言网站seo属于什么专业
  • 苏州做企业网站建设网页入口网站推广
  • wordpress综合检测工具关键词排名优化易下拉软件
  • 郑州中扬科技网站建设公司怎么样知乎关键词搜索
  • 家具网站建设的背景网络销售 市场推广
  • html网页基本结构seo黑帽技术有哪些
  • 网站建设实训关键帧
  • 佛山网站如何制作深圳网络推广培训机构
  • 山西品牌网站建设推广找客户平台
  • wordpress 清空回收站电脑优化软件哪个好用
  • 网站推广和宣传的方法广州线上教学
  • 崇礼网站建设seo优化排名公司
  • 中国建筑装饰网下载东莞关键词优化软件
  • 如何利用模板做网站seo公司推广宣传
  • 做微信的网站叫什么名字优化seo软件
  • 自己的网站如何给别人做有偿广告页面关键词优化
  • 创业做旅游网站aso优化排名违法吗