五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【圖靈周瑜老師Spring源碼全集】依賴注入、Spring Beans、Spri

2023-09-02 18:22 作者:bilibili00007  | 我要投稿

循環(huán)依賴

三級緩存

proxy代理類,先執(zhí)行切面邏輯再執(zhí)行目標(biāo)類原有的方法

  • autowired 是setting注入嗎?構(gòu)造注入是設(shè)置普通對象還是代理對象?
  • 正常應(yīng)該是把代理對象放到單例池,而不是把普通的對象放到單例池。
  • 需要判斷是否有循環(huán)依賴,如果出現(xiàn)循環(huán)依賴就要在第一步做AOP,把代理對象放到單例池。
  • 構(gòu)造注入會導(dǎo)致循環(huán)依賴嗎?
  • creatingSet保存正在創(chuàng)建中的對象,2.2填充屬性的時候如果沒有在單例池(一級緩存)中找到,
  • 則到creatingSet查找,如果有找到,則是存在循環(huán)依賴
  • 出現(xiàn)循環(huán)依賴,則進(jìn)行AOP創(chuàng)建代理對象
  • 為了避免多次循環(huán)依賴,多次AOP導(dǎo)致重復(fù)創(chuàng)建,所以在2.2創(chuàng)建的代理對象需要放到二級緩存(earlySingletonObjects)起來。


  • 單例池singletonObjects(一級緩存):經(jīng)過bean的完整生命周期創(chuàng)建的bean保存的對象。
  • 三級緩存singletonFactories作用是打破循環(huán)依賴,用于生成依賴對象的代理對象。
  • 保存的是lambda表達(dá)式用于判斷循環(huán)依賴并生成解決循環(huán)依賴的代理對象。
  • 三級緩存生成代理對象后保存到earlySingletonObjects二級緩存
  • 三級緩存中的lambda表達(dá)式執(zhí)行完就會remove,因?yàn)橐呀?jīng)產(chǎn)生了代理對象保存到二級緩存所以沒有必要再保留
  • 正常進(jìn)行AOP的邏輯會判斷是否已經(jīng)有代理對象,如果已經(jīng)有代理對象則不會進(jìn)行AOP
  • 構(gòu)造注入導(dǎo)致的循環(huán)依賴Spring是無法解決的
  • 需要增加無參構(gòu)造方法,避免使用有參構(gòu)造方法實(shí)例化
  • lazy懶加載也可以解決。直接根據(jù)依賴的類生成代理對象,代理對象的生成方式跟之前不一樣,這里生成的代理對象不會有目標(biāo)對象。


【圖靈周瑜老師Spring源碼全集】依賴注入、Spring Beans、Spri的評論 (共 條)

分享到微博請遵守國家法律
东丽区| 金塔县| 屏山县| 大田县| 年辖:市辖区| 台江县| 东平县| 义马市| 宜章县| 韶山市| 顺昌县| 阳西县| 新郑市| 三门峡市| 翁源县| 东平县| 奎屯市| 日土县| 武宣县| 宿州市| 武陟县| 东宁县| 青田县| 烟台市| 上蔡县| 葫芦岛市| 丰宁| 赫章县| 桂平市| 大石桥市| 独山县| 赣州市| 金湖县| 柳林县| 如东县| 长沙县| 灵武市| 芜湖市| 铜鼓县| 依安县| 固原市|