当前位置: 首页 > 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.wangmingla.cn/news/95531.html

相关文章:

  • 网上兼职网站怎么做的沧州网站seo公司
  • 个人做慈善网站电商seo搜索优化
  • 福州网站建站公司最新百度新闻
  • 什么网站可以接室内设计做百度广告开户流程
  • 淮北矿业工程建设公司网站百度关键词搜索次数
  • 网站建设意见建议表西安网络公司
  • 人和动物做愛视频网站谷歌seo靠谱吗
  • wordpress开启自定义字段搜索引擎优化自然排名的优点
  • 蛋糕网站建设毕业论文键词优化排名
  • 带着购物系统回到80年代百合seo培训
  • 网站开发学什么百度竞价推广代运营公司
  • 兼容性视图中显示所有网站sem是什么分析方法
  • 单页面网站制作技术外国网站开放的浏览器
  • 个人代做网站江西seo推广方案
  • 滕王阁环境建设网站武汉百度关键词推广
  • 软件开发过程五个步骤武汉seo排名
  • 中国建设网站软文网站
  • 交互式网站设计惠州seo博客
  • wordpress主题的安装优化大师win10
  • 即墨市网站建设鱼头seo软件
  • glitch做网站百度公司招聘
  • 1核1g服务器做网站免费拓客软件排行榜
  • 0基础如何做网站品牌运营管理公司
  • 东莞寮步网站建设网络公司百度投诉电话24小时
  • 建设一个行业性的网站价格成都网站建设方案托管
  • 网站域名注册流程太原网站推广公司
  • 做外贸维护网站需要注意什么企业网站注册域名的步骤
  • 平台网站建设教程今天刚刚发生的新闻最新新闻
  • 用asp做网站出现空白互联网营销师培训内容
  • 好的室内设计网站网站seo优化教程