Bean的生命週期

2021-08-31 10:11:50 字數 1819 閱讀 1616

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

使用依賴注入,spring按照bean定義的資訊中配置的所有的屬性值,包括bean中bean屬性。 3.

如果bean實現了

beannameaware

介面,工廠呼叫bean的setbeanname()方法傳遞的id

4.如果bean實現了beanfactoryaware介面,工程呼叫setbeanfactory()方法傳入工廠自身。 5.

如果有beanpostprocessor

和bean關聯,那麼其postprocessbeforeinitalization()方法將被呼叫。

6.如果bean指定了init-method方法被呼叫 7.

最後,如果有beanpostprocessor和bean關聯,那麼其postprocessafterinitalization()方法將被呼叫。

此時的bean已經可以被應用系統使用,並將被保留在beanfactory中知道它不在被需要可以將其從beanfactory中刪除。

如果bean實現了disposablebean介面,destroy()方法被呼叫

注: beannameaware中的setbeanname()方法設定bean的名字此時得到的名字是xml檔案中的配置的id屬性。 例:

<?xml version="1.0" encoding="utf-8"?>

studentserviceimpl中

public class studentserviceimpl implements studentservice, beannameaware 

}

此時的輸出結果是:

studentserviceimpl

完整案例

studentserviceimpl中

public class studentserviceimpl implements studentservice,beannameaware,beanfactoryaware, beanpostprocessor 

@override

public void insert()

@override

public void setbeanname(string arg0)

@override

public void setbeanfactory(beanfactory arg0) throws bean***ception

@override

public object postprocessafterinitialization(object arg0, string arg1)

throws bean***ception

@override

public object postprocessbeforeinitialization(object arg0, string arg1)

throws bean***ception

}

<?xml version="1.0" encoding="utf-8"?>

輸出的結果是

呼叫setbeanname其值為studentserviceimpl

呼叫setbeanfactory()

呼叫postprocessbeforeinitialization

呼叫初始化的方法

呼叫postprocessafterinitialization

Bean生命週期

初始化 1 實現org.springframework.beans.factory.initializingbean介面,覆蓋afterpropertiesset方法。public class exampleinitializingbean implements initializingbean 2...

bean生命週期

spring中的ioc容器可以管理bean生命週期,預設情況下,ioc容器初始化時便會把bean例項化。通過以下例項過程來體會bean的生命週期 1.student類 package text public class student public student public void setna...

Bean生命週期?

前言 生命週期 從物件的建立,到物件銷毀的過程。一 bean的生命週期 7步操作 1.建立。通過無參構造方法,建立bean的例項 2.設定物件屬性,和對其他bean的引用。3.檢查有沒有bean的後置處理器,有就把bean的例項傳給postprocessbeforeinitialization 方法...