博客 / 詳情

返回

【後端面經-Spring】Spring 中 bean 的生命週期

1.bean簡介

  • bean是一個對象,是由Spring中的IoC創建、實例化的對象。
  • 一般的java對象,使用的時候創建,不需要就釋放內存進行銷燬,而bean的生命週期更加複雜
  • 作用域

    • singleton:默認單例形式,唯一的bean實例。
    • prototype:每次請求都會創建一個新的bean實例。
    • request:每次HTTP請求都會創建一個新的bean實例,該作用域僅在當前http request內有效。
    • session:每次HTTP請求都會創建一個新的bean實例,該作用域僅在當前HTTP session內有效。
    • global-session:全局session作用域,僅僅在基於portlet的web應用中才有意義,Spring5已經沒有了。

2. 生命週期

  1. 實例化/創建

    • 依靠反射進行實例化,而不需要像一般的java對象一樣手動創建;
  2. 屬性填充

    • 使用依賴注入進行屬性填充;
  3. 初始化

    • 完成初始化之後,bean可以使用;
  4. 銷燬

    • 容器關閉或者停止服務的時候,銷燬該對象;
  5. 類比

    • 人的一生:出生->學習->成長->死亡
    • bean的一生:實例化->屬性填充->初始化->銷燬

    3. 參考資料

  • 阿里雲開發社區-《聊透 Spring bean 的生命週期》

    • 鏈接
    • 細緻全面講述了 bean 的生命週期,輔以代碼理解。
  • 掘金社區-《Spring Bean 生命週期,好像人的一生》

    • 鏈接
    • 用形象的社會現象類比bean對象的生命週期,易於理解,並且用一個PersonBean作為示例,給出生命週期對應的代碼。
  • SegmentFault- 《一文讀懂 Spring Bean 的生命週期》

    • 鏈接
    • 詳細介紹了bean對象的概念,以及bean的生命週期
user avatar eisuto 頭像 an_653b347d1d3da 頭像 ticktank 頭像 edagarli 頭像 pudongping 頭像 yaoyaolx_wiki 頭像 TwilightLemon 頭像 gozhuyinglong 頭像 luoshenshen 頭像 fedl 頭像 shadowck 頭像 murphywuwu 頭像
19 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.