Spring中Bean的生命週期及其擴充套件點

2022-02-09 16:57:31 字數 3320 閱讀 9917

spring中

bean

的管理是其最基本的功能,根據下面的圖來了解

spring

中bean

的生命週期:

解說:(1)beanfactorypostprocessor

postprocessorbeanfactory()

方法:若某個

ioc容器內新增了實現了

beanfactorypostprocessor

介面的實現類

bean

,那麼在該容器中例項化任何其他

bean

之前可以**該

bean

中的postprcessorbeanfactory()

方法來對

bean

的配置元資料進行更改,比如從

xml配置檔案中獲取到的配置資訊。

(2)bean的例項化:

bean

的例項化是使用反射實現的。

(3)bean屬性注入:

bean

例項化完成後,利用反射技術實現屬性及依賴

bean

的注入。

(4)beannameaware

setbeanname()

方法:如果某個

bean

實現了beannameaware

介面,那麼

spring

將會將bean

例項的id

傳遞給setbeanname()

方法,在

bean

類中新增乙個

beanname

字段,並實現

setbeanname()

方法。(5)beanfactoryaware

setbeanfactory()

方法:如果某個

bean

實現了beanfactoryaware

介面,那麼

spring

將會將建立

bean

的beanfactory

傳遞給setbeanfactory()

方法,在

bean

類中新增了乙個

beanfactory

字段用來儲存

beanfactory

的值,並實現

setbeanfactory()

方法。的

方法:如果某個

bean

實現了介面,那麼

spring

將會將該

bean

所在的上下文環境

傳遞給方法,在

bean

類中新增乙個

字段用來儲存

的值,並實現

方法。(7)beanpostprocessor預初始化方法:如果某個

ioc容器中增加的實現

beanpostprocessor

介面的實現類

bean

,那麼在該容器中例項化

bean

之後,執行初始化之前會呼叫

beanpostprocessor

中的postprocessbeforeinitialization()

方法執行預初始化處理。

(8)initializingbean

afterpropertiesset()

方法:如果

bean

實現了initializingbean

介面,那麼

bean

在例項化完成後將會執行介面中的

afterpropertiesset()

方法來進行初始化。

(9)自定義的inti-method指定的方法:如果配置檔案中使用

init-method

屬性指定了初始化方法,那麼

bean

在例項化完成後將會呼叫該屬性指定的初始化方法進行

bean

的初始化。

(10)beanpostprocessor初始化後方法:如果某個

ioc容器中增加的實現

beanpostprocessor

介面的實現類

bean

,那麼在該容器中例項化

bean

之後並且完成初始化呼叫後執行該介面中的

postprocessorafterinitialization()

方法進行初始化後處理。

(11)使用bean:此時有關

bean

的所有準備工作均已完成,

bean

可以被程式使用了,它們將會一直駐留在應用上下文中,直到該上下文環境被銷毀。

(12)disposablebean

destory()

方法:如果

bean

實現了disposablebean

介面,spring

將會在bean

例項銷毀之前呼叫該介面的

destory()

方法,來完成一些銷毀之前的處理工作。

(13)自定義的destory-method指定的方法:如果在配置檔案中使用

destory-method

指定了銷毀方法,那麼在

bean

例項銷毀之前會呼叫該指定的方法完成一些銷毀之前的處理工作。

注意:1、beanfactorypostprocessor介面與

beanpostprocessor

介面的作用範圍是整個上下文環境中,使用方法是單獨新增乙個類來實現這些介面,那麼在處理其他

bean

的某些時刻就會**響應的介面中的方法。

2、beannameaware、

beanfactoryaware

、的作用範圍的

bean

範圍,即僅僅對實現了該介面的指定

bean

有效,所有其使用方法是在要使用該功能的

bean

自己來實現該介面。

3、第8點與第

9點所述的兩個初始化方法作用是一樣的,我們完全可以使用其中的一種即可,一般情況我們使用第

9點所述的方式,盡量少的去來

bean

中實現某些介面,保持其獨立性,低耦合性,盡量不要與

spring

**耦合在一起。第

12和第

13也是如此。

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