Spring中Bean的生命週期

2021-09-23 20:27:26 字數 1682 閱讀 1064

首先我們應該知道,不管是spring還是springboot其實在底層也都實現了servlet介面。

因而在了解spring中bean的生命週期之前,我們先來了解一下servlet的生命週期,然後按照這個流程去追尋bean的生命週期。

servlet

生命週期:

1、例項化  在第一次訪問servlet的時候建立servlet物件,只呼叫一次。證明servlet物件在tomcat中是單例。

2、初始化init()方法 建立完servlet物件的時候呼叫,只呼叫1次。

3、服務service()方法  每次發出請求是呼叫。呼叫n次

4、銷毀 destroy()方法 銷毀servlet物件的時候呼叫,停止伺服器或者重新部署web應用時銷毀servlet物件。只呼叫一次。

spring

中bean的生命週期

1、例項化乙個bean--也就是我們常說的new;

2、按照spring上下文對例項化的bean進行配置--也就是ioc注入;

3、如果這個bean已經實現了beannameaware介面,會呼叫它實現的setbeanname(string)方法,此處傳遞的就是spring配置檔案中bean的id值

4、如果這個bean已經實現了beanfactoryaware介面,會呼叫它實現的setbeanfactory(setbeanfactory(beanfactory)傳遞的是spring工廠自身(可以用這個方式來獲取其它bean,只需在spring配置檔案中配置乙個普通的bean就可以)

5、如果這個

bean

已經實現了

介面,會呼叫

方法,傳入

spring

上下文(同樣這個方式也可以實現步驟

4的內容,但比

4更好,因為

是beanfactory

的子介面,有更多的實現方法); 6

、如果這個

bean

實現了beanpostprocessor

介面,將會呼叫postprocessbeforeinitialization(object obj, string s)

方法,beanpostprocessor

經常被用作是

bean

內容的更改,並且由於這個是在

bean

初始化結束時呼叫那個的方法,也可以被應用於記憶體或快取技術;

7、如果bean在spring配置檔案中配置了init-method屬性會自動呼叫其配置的初始化方法。

8、如果這個bean關聯了beanpostprocessor介面,將會呼叫postprocessafterinitialization(object obj, string s)方法、;

9、當bean不再需要時,會經過清理階段,如果bean實現了disposablebean這個介面,會呼叫那個其實現的destroy()方法;

10、最後,如果這個bean的spring配置中配置了destroy-method屬性,會自動呼叫其配置的銷毀方法。

以上10

步驟可以作為面試或者筆試的模板,另外我們這裡描述的是應用

spring

上下文bean

的生命週期,如果應用

spring

的工廠也就是

beanfactory

的話去掉第5步

就ok了。

Spring框架中的Bean物件的生命週期

從書上可知,spring框架中bean物件有它的生命週期,還包括bean的銷毀。在beanfacotory中獲取的例項是singleton,beanfactory預設每乙個引用來維護乙個例項,對單執行程式來講,並不會有什麼問題,但是多程式來說,就需要你注意執行的安全,可以設定每次在beanfacot...

Spring中Bean的作用域 狀態 生命週期

spring 3中為bean定義了5中作用域,分別為singleton 單例 prototype 原型 request session和global session,5種作用域說明如下 singleton 單例模式,spring ioc容器中只會存在乙個共享的bean例項,無論有多少個bean引用它...

Spring學習筆記 關於bean的生命週期

springioc容器可以管理bean的生命週期,spring允許在bean宣告週期的特定點執行定製的任務。springioc容器對bean的生命週期進行管理的過程 在bean的宣告裡設定init method和destory method屬性,為bean指定初始化和銷毀的方法。bean後置處理器允...