【后端面經(jīng)-Spring】Spring 中 bean 的生命周期)

1.bean簡介

  • bean是一個對象,是由Spring中的IoC創(chuàng)建、實例化的對象。
  • 一般的java對象,使用的時候創(chuàng)建,不需要就釋放內(nèi)存進行銷毀,而bean的生命周期更加復(fù)雜
  • 作用域
    • singleton:默認單例形式,唯一的bean實例。
    • prototype:每次請求都會創(chuàng)建一個新的bean實例。
    • request:每次HTTP請求都會創(chuàng)建一個新的bean實例,該作用域僅在當(dāng)前http request內(nèi)有效。
    • session:每次HTTP請求都會創(chuàng)建一個新的bean實例,該作用域僅在當(dāng)前HTTP session內(nèi)有效。
    • global-session:全局session作用域,僅僅在基于portlet的web應(yīng)用中才有意義,Spring5已經(jīng)沒有了。

2. 生命周期

  1. 實例化/創(chuàng)建
  • 依靠反射進行實例化,而不需要像一般的java對象一樣手動創(chuàng)建;
  1. 屬性填充
  • 使用依賴注入進行屬性填充;
  1. 初始化
  • 完成初始化之后,bean可以使用;
  1. 銷毀
  • 容器關(guān)閉或者停止服務(wù)的時候,銷毀該對象;
  1. 類比
  • 人的一生:出生->學(xué)習(xí)->成長->死亡
  • bean的一生:實例化->屬性填充->初始化->銷毀

3. 參考資料

  • 阿里云開發(fā)社區(qū)-《聊透 Spring bean 的生命周期》
    • 鏈接
    • 細致全面講述了 bean 的生命周期,輔以代碼理解。
  • 掘金社區(qū)-《Spring Bean 生命周期,好像人的一生》
    • 鏈接
    • 用形象的社會現(xiàn)象類比bean對象的生命周期,易于理解,并且用一個PersonBean作為示例,給出生命周期對應(yīng)的代碼。
  • SegmentFault- 《一文讀懂 Spring Bean 的生命周期》
    • 鏈接
    • 詳細介紹了bean對象的概念,以及bean的生命周期
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容