Spring中Bean的生命週期

2021-06-23 01:04:50 字數 1562 閱讀 9594

乙個新的物件

使用singleton模式產生單一例項,對單執行緒的程式說並不會有什麼問題,但對於多執行緒的程式,就必須注意安全(thread-safe)的議題,防止多個執行緒

同時訪問共享資源所引發的資料不同步問題。

在spring中,singleton屬性預設是true,只有設定為false,則每次指定別名取得的bean時都會產生乙個新的例項

乙個bean從建立到銷毀,如果是用beanfactory來生成,管理bean的話,會經歷幾個執行階段:

1:bean的建立:

有beanfactory讀取bean定義檔案,並生成各個bean例項

2:屬性注入:

執行相關的bean屬性依賴注入

3:beannameaware的setbeanname():

如果bean類有實現org.springframework.beans.beannameaware介面,則執行它的setbeanname()方法

4:beanfactoryaware的setbeanfactory():

如果bean類有實現org.springframework.beans.factory.beanfactoryaware介面,則執行它的setbeanfactory()方法

5:beanpostprocessors的processbeforeinitializat

ion()

如果任何的org.springframework.beans.factory.config.beanpostprocessors例項與bean例項相關。則執行beanpostprocessors例項

的processbeforeinitializat

ion()方法

6:initializingbean的afterpropertiesset():

如果bean類已實現org.springframework.beans.factory.initializingbean介面,則執行他的afterpropertiesset()方法

7:bean定義檔案中定義init-method:

可以在bean定義檔案中使用"init-method"屬性設定方法名稱例如:

如果有以上設定的話,則執行到這個階段,就會執行initbean()方法

8:beanpostprocessors的processaafterinitializat

ion()

如果有任何的beanpostprocessors例項與bean例項關聯,則執行beanpostprocessors例項的processaafterinitializat

ion()方法

9:disposablebean的destroy()

在容器關閉時,如果bean類有實現org.springframework.beans.factory.disposablebean介面,則執行他的destroy()方法

10:bean定義檔案中定義destroy-method

在容器關閉時,可以在bean定義檔案中使用"destroy-method"屬性設定方法名稱,例如:

beanpostprocessors的processbeforeinitializat

ion()及之後的流程

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後置處理器允...