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 方法...