Spring中bean的生命週期

2021-08-27 20:09:04 字數 1120 閱讀 6205

下面以beanfactory為例,說明乙個bean的生命週期活動:

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

執行bean的屬性依賴注入。

如果bean類實現了org.springframework.beans.factory.beannameaware介面,則執行其setbeanname()方法。

如果bean類實現了org.springframework.beans.factory.beanfactoryaware介面,則執行其setbeanfactory()方法。

容器中如果有實現org.springframework.beans.factory.beanpostprocessors介面的例項,則任何bean在初始化之前都會執行這個例項的processbeforeinitialization()方法。

如果bean類實現了org.springframework.beans.factory.initializingbean介面,則執行其afterpropertiesset()方法。

在bean定義檔案中使用「init-method」屬性設定方法名稱,如下:

.......

這時會執行initmethod()方法,注意,這個方法是不帶引數的。

容器中如果有實現org.springframework.beans.factory.beanpostprocessors介面的例項,則任何bean在初始化之前都會執行這個例項的processafterinitialization()方法。

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

在容器關閉時,可以在bean定義檔案中使用「destory-method」定義的方法

.......

這時會執行destroymethod()方法,注意,這個方法是不帶引數的。

以上就是beanfactory維護的乙個bean的生命週期。下面這個圖可能更直觀一些:

beanpostprocessors的processbeforeinitialization()

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