国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

福建參觀禁毒展覽館的網(wǎng)站建設(shè)網(wǎng)站設(shè)計(jì)公司報(bào)價(jià)

福建參觀禁毒展覽館的網(wǎng)站建設(shè),網(wǎng)站設(shè)計(jì)公司報(bào)價(jià),網(wǎng)站建設(shè)規(guī)劃方案,vs2013做網(wǎng)站保存的格式什么是循環(huán)依賴 ? 一個(gè)或多個(gè)對(duì)象之間存在直接或間接的依賴關(guān)系,這種依賴關(guān)系構(gòu)成一個(gè)環(huán)形調(diào)用,有下面 3 種方式。 我們看一個(gè)簡(jiǎn)單的 Demo,對(duì)標(biāo)“情況 2”。 Service public class Louzai1 {Autowiredprivate Louzai2 louzai2;…

在這里插入圖片描述

什么是循環(huán)依賴 ?

一個(gè)或多個(gè)對(duì)象之間存在直接或間接的依賴關(guān)系,這種依賴關(guān)系構(gòu)成一個(gè)環(huán)形調(diào)用,有下面 3 種方式。
在這里插入圖片描述
我們看一個(gè)簡(jiǎn)單的 Demo,對(duì)標(biāo)“情況 2”。

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

這是一個(gè)經(jīng)典的循環(huán)依賴,它能正常運(yùn)行,后面我們會(huì)通過(guò)源碼的角度,解讀整體的執(zhí)行流程。

三級(jí)緩存

解讀源碼流程之前,spring 內(nèi)部的三級(jí)緩存邏輯必須了解,要不然后面看代碼會(huì)蒙圈。

第一級(jí)緩存:singletonObjects,用于保存實(shí)例化、注入、初始化完成的 bean 實(shí)例;
第二級(jí)緩存:earlySingletonObjects,用于保存實(shí)例化完成的 bean 實(shí)例;
第三級(jí)緩存:singletonFactories,用于保存 bean 創(chuàng)建工廠,以便后面有機(jī)會(huì)創(chuàng)建代理對(duì)象。
這是最核心,我們直接上源碼:
在這里插入圖片描述
執(zhí)行邏輯:

先從“第一級(jí)緩存”找對(duì)象,有就返回,沒(méi)有就找“二級(jí)緩存”;
找“二級(jí)緩存”,有就返回,沒(méi)有就找“三級(jí)緩存”;
找“三級(jí)緩存”,找到了,就獲取對(duì)象,放到“二級(jí)緩存”,從“三級(jí)緩存”移除。

原理執(zhí)行流程

我把“情況 2”執(zhí)行的流程分解為下面 3 步,是不是和“套娃”很像 ?
在這里插入圖片描述
整個(gè)執(zhí)行邏輯如下:

1、在第一層中,先去獲取 A 的 Bean,發(fā)現(xiàn)沒(méi)有就準(zhǔn)備去創(chuàng)建一個(gè),然后將 A 的代理工廠放入“三級(jí)緩存”(這個(gè) A 其實(shí)是一個(gè)半成品,還沒(méi)有對(duì)里面的屬性進(jìn)行注入),但是 A 依賴 B 的創(chuàng)建,就必須先去創(chuàng)建 B;
2、在第二層中,準(zhǔn)備創(chuàng)建 B,發(fā)現(xiàn) B 又依賴 A,需要先去創(chuàng)建 A;
3、在第三層中,去創(chuàng)建 A,因?yàn)榈谝粚右呀?jīng)創(chuàng)建了 A 的代理工廠,直接從“三級(jí)緩存”中拿到 A 的代理工廠,獲取 A 的代理對(duì)象,放入“二級(jí)緩存”,并清除“三級(jí)緩存”;
4、回到第二層,現(xiàn)在有了 A 的代理對(duì)象,對(duì) A 的依賴完美解決(這里的 A 仍然是個(gè)半成品),B 初始化成功;
5、回到第一層,現(xiàn)在 B 初始化成功,完成 A 對(duì)象的屬性注入,然后再填充 A 的其它屬性,以及 A 的其它步驟(包括 AOP),完成對(duì) A 完整的初始化功能(這里的 A 才是完整的 Bean)。
6、將 A 放入“一級(jí)緩存”。

Spring Bean的生命周期

getBean(a)–>實(shí)例化A–>屬性注入–>初始化A–>銷毀

三級(jí)緩存的作用:

singletonObjects(一級(jí)緩存):存放實(shí)例化–>代理–>屬性注入–>初始化后的對(duì)象
earlySingletonObjects(二級(jí)緩存):存放實(shí)例化–>代理–>屬性注入后的對(duì)象
singletonFactories(三級(jí)緩存):存放對(duì)象工廠,可以從對(duì)象工廠中拿到還未屬性注入的對(duì)象(對(duì)象工廠便于創(chuàng)建代理對(duì)象)
當(dāng)未添加三級(jí)緩存時(shí)候:
在這里插入圖片描述
當(dāng)加入三級(jí)緩存后:
在這里插入圖片描述

http://m.aloenet.com.cn/news/44873.html

相關(guān)文章:

  • 包頭全網(wǎng)營(yíng)銷網(wǎng)站建設(shè)seo外包收費(fèi)
  • 網(wǎng)站建設(shè)智能優(yōu)化seo優(yōu)化技術(shù)排名
  • 直播系統(tǒng)百度seo2022新算法更新
  • 單位做網(wǎng)站需要準(zhǔn)備什么深圳優(yōu)化怎么做搜索
  • 三門峽網(wǎng)站建設(shè)電話熱狗網(wǎng)站排名優(yōu)化外包
  • 北京企業(yè)網(wǎng)站建設(shè)哪家服務(wù)好營(yíng)銷頁(yè)面
  • 知名網(wǎng)站建設(shè)官網(wǎng)網(wǎng)站性能優(yōu)化方法
  • 360免費(fèi)做網(wǎng)站凡科建站怎么導(dǎo)出網(wǎng)頁(yè)
  • 重慶網(wǎng)站排名公司友情鏈接免費(fèi)發(fā)布平臺(tái)
  • 建設(shè)獨(dú)立網(wǎng)站的公司嗎長(zhǎng)沙seo培訓(xùn)
  • 南寧企業(yè)網(wǎng)站建站模板中文網(wǎng)站排名
  • 租車網(wǎng)站建設(shè)2345網(wǎng)址大全下載到桌面
  • jq 網(wǎng)站頭部廣告代碼大學(xué)生創(chuàng)新創(chuàng)業(yè)大賽
  • 網(wǎng)站集群怎么做網(wǎng)絡(luò)運(yùn)營(yíng)推廣合作
  • 做效果圖兼職的網(wǎng)站珠海網(wǎng)絡(luò)推廣公司
  • php網(wǎng)站開(kāi)發(fā)演講稿鏈接搜索引擎
  • 深圳哪家網(wǎng)站建設(shè)的公司好蘋果cms永久免費(fèi)全能建站程序
  • 什么網(wǎng)站做蜘蛛池廈門網(wǎng)絡(luò)推廣培訓(xùn)
  • 北京南站附近的景點(diǎn)平臺(tái)推廣是什么工作
  • 專業(yè)網(wǎng)站建設(shè)價(jià)格網(wǎng)頁(yè)設(shè)計(jì)素材網(wǎng)站
  • 品牌網(wǎng)站建設(shè)9小蝌蚪9淘寶優(yōu)化
  • wordpress新建界面太原seo霸屏
  • 友情鏈接中有個(gè)網(wǎng)站域名過(guò)期了會(huì)影響seo系統(tǒng)培訓(xùn)
  • 制作個(gè)人網(wǎng)站素材百度開(kāi)戶公司
  • 尼樂(lè)清網(wǎng)站建設(shè)阿里網(wǎng)站seo
  • 正能量網(wǎng)站免費(fèi)進(jìn)入無(wú)需下載百度權(quán)重查詢
  • 雙井做網(wǎng)站的公司網(wǎng)絡(luò)整合營(yíng)銷方案ppt
  • 網(wǎng)站建設(shè)要學(xué)哪些方面百度競(jìng)價(jià)托管外包
  • 深圳羅湖住房和建設(shè)局網(wǎng)站鄭州外語(yǔ)網(wǎng)站建站優(yōu)化
  • 托者設(shè)計(jì)吧官網(wǎng)免費(fèi)seo提交工具