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. 生命週期
-
實例化/創建
- 依靠反射進行實例化,而不需要像一般的java對象一樣手動創建;
-
屬性填充
- 使用
依賴注入進行屬性填充;
- 使用
-
初始化
- 完成初始化之後,bean可以使用;
-
銷燬
- 容器關閉或者停止服務的時候,銷燬該對象;
-
類比
- 人的一生:出生->學習->成長->死亡
- bean的一生:實例化->屬性填充->初始化->銷燬
3. 參考資料
-
阿里雲開發社區-《聊透 Spring bean 的生命週期》
- 鏈接
- 細緻全面講述了 bean 的生命週期,輔以代碼理解。
-
掘金社區-《Spring Bean 生命週期,好像人的一生》
- 鏈接
- 用形象的社會現象類比
bean對象的生命週期,易於理解,並且用一個PersonBean作為示例,給出生命週期對應的代碼。
-
SegmentFault- 《一文讀懂 Spring Bean 的生命週期》
- 鏈接
- 詳細介紹了bean對象的概念,以及bean的生命週期