最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring的三級(jí)緩存解決循環(huán)依賴問題

 更新時(shí)間:2025年06月09日 08:48:14   作者:我的城市沒有海~  
這篇文章主要介紹了Spring的三級(jí)緩存解決循環(huán)依賴問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

一、什么是Spring三級(jí)緩存

  • 第一級(jí)緩存:也叫單例池,存放已經(jīng)經(jīng)歷了完整生命周期的Bean對(duì)象。
  • 第二級(jí)緩存:存放早期暴露出來的Bean對(duì)象,實(shí)例化以后,就把對(duì)象放到這個(gè)Map中。(Bean可能只經(jīng)過實(shí)例化,屬性還未填充)。
  • 第三級(jí)緩存:存放早期暴露的Bean的工廠。

注:

只有單例的bean會(huì)通過三級(jí)緩存提前暴露來解決循環(huán)依賴的問題,而非單例的bean,每次從容器中獲取都是一個(gè)新的對(duì)象,都會(huì)重新創(chuàng)建,所以非單例的bean是沒有緩存的,不會(huì)將其放到三級(jí)緩存中。

為了解決第二級(jí)緩存中AOP生成新對(duì)象的問題,Spring就提前AOP,比如在加載b的流程中,如果發(fā)送了循環(huán)依賴,b依賴了a,就要對(duì)a執(zhí)行AOP,提前獲取增強(qiáng)以后的a對(duì)象,這樣b對(duì)象依賴的a對(duì)象就是增強(qiáng)以后的a了。

二三級(jí)緩存就是為了解決循環(huán)依賴,且之所以是二三級(jí)緩存而不是二級(jí)緩存,主要是可以解決循環(huán)依賴對(duì)象需要提前被aop代理,以及如果沒有循環(huán)依賴,早期的bean也不會(huì)真正暴露,不用提前執(zhí)行代理過程,也不用重復(fù)執(zhí)行代理過程。

二、對(duì)象在三級(jí)緩存中的創(chuàng)建流程

A依賴B,B依賴A

1、A創(chuàng)建過程中需要B,于是先將A放到三級(jí)緩存,去實(shí)例化B。

2、B實(shí)例化的過程中發(fā)現(xiàn)需要A,于是B先查一級(jí)緩存尋找A,如果沒有,再查二級(jí)緩存,如果還沒有,再查三級(jí)緩存,找到了A,然后把三級(jí)緩存里面的這個(gè)A放到二級(jí)緩存里面,并刪除三級(jí)緩存里面的A。

3、B順利初始化完畢,將自己放到一級(jí)緩存里面(此時(shí)B里面的A依然是創(chuàng)建中的狀態(tài))。然后回來接著創(chuàng)建A,此時(shí)B已經(jīng)創(chuàng)建結(jié)束,可以直接從一級(jí)緩存里面拿到B,去完成A的創(chuàng)建,并將A放到一級(jí)緩存。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mybatis-plus動(dòng)態(tài)表名的實(shí)現(xiàn)示例

    mybatis-plus動(dòng)態(tài)表名的實(shí)現(xiàn)示例

    這篇文章主要介紹了mybatis-plus動(dòng)態(tài)表名的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • java?引用傳遞的三種類型小結(jié)

    java?引用傳遞的三種類型小結(jié)

    這篇文章主要介紹了java?引用傳遞的三種類型,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 深入剖析ArrayList的remove方法

    深入剖析ArrayList的remove方法

    這篇文章主要介紹了ArrayList的remove方法使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。</p>
    2021-09-09
  • SpringBoot獲取Request和Response方法代碼解析

    SpringBoot獲取Request和Response方法代碼解析

    這篇文章主要介紹了SpringBoot獲取Request和Response方法代碼解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • InputStreamReader 和FileReader的區(qū)別及InputStream和Reader的區(qū)別

    InputStreamReader 和FileReader的區(qū)別及InputStream和Reader的區(qū)別

    這篇文章主要介紹了InputStreamReader 和FileReader的區(qū)別及InputStream和Reader的區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • Java?8?Optional解決空指針問題全面解析

    Java?8?Optional解決空指針問題全面解析

    在Java編程中,空指針異常(NullPointerException)是一個(gè)常見的錯(cuò)誤,經(jīng)常會(huì)導(dǎo)致程序的崩潰或不可預(yù)料的行為,下面通過本文給大家介紹Java8 Optional解決空指針問題,感興趣的朋友跟隨小編一起看看吧
    2025-10-10
  • Java Builder Pattern建造者模式詳解及實(shí)例

    Java Builder Pattern建造者模式詳解及實(shí)例

    這篇文章主要介紹了Java Builder Pattern建造者模式詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • SpringBoot使用JWT實(shí)現(xiàn)登錄驗(yàn)證的方法示例

    SpringBoot使用JWT實(shí)現(xiàn)登錄驗(yàn)證的方法示例

    這篇文章主要介紹了SpringBoot使用JWT實(shí)現(xiàn)登錄驗(yàn)證的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 基于Java?SpringBoot的前后端分離信息管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)

    基于Java?SpringBoot的前后端分離信息管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)

    當(dāng)今社會(huì),人才的流動(dòng)速度大大增加,因此也對(duì)黨建工作的管理層面工作帶來了空前且復(fù)雜的挑戰(zhàn),從而使得如何高效的開展管理黨建工作成為了亟待解決的問題。本文將介紹通過Java?SpringBoot實(shí)現(xiàn)前后端分離信息管理系統(tǒng),感興趣的同學(xué)可以了解一下
    2021-11-11
  • Java內(nèi)存泄漏問題的排查、優(yōu)化與最佳實(shí)踐

    Java內(nèi)存泄漏問題的排查、優(yōu)化與最佳實(shí)踐

    在?Java?開發(fā)中,內(nèi)存泄漏是一個(gè)常見且令人頭疼的問題,內(nèi)存泄漏指的是程序在運(yùn)行過程中,已經(jīng)不再使用的對(duì)象沒有被及時(shí)釋放,從而導(dǎo)致內(nèi)存占用不斷增加,最終可能導(dǎo)致程序崩潰或性能顯著下降,本文給大家介紹了Java內(nèi)存泄漏排查、優(yōu)化與最佳實(shí)踐
    2025-01-01

最新評(píng)論

鄂托克旗| 合山市| 江北区| 福安市| 大余县| 盐津县| 繁昌县| 梁河县| 内丘县| 左权县| 介休市| 察雅县| 阳信县| 灌南县| 依兰县| 中阳县| 娄烦县| 衡阳市| 芜湖市| 冕宁县| 南江县| 内黄县| 观塘区| 昂仁县| 上蔡县| 大连市| 平利县| 清徐县| 铁岭县| 长垣县| 耒阳市| 郸城县| 京山县| 恩施市| 商河县| 嘉峪关市| 安远县| 桓台县| 肥东县| 潞城市| 岳池县|