step1:呼叫無參構造器,建立例項物件。
step2:呼叫引數的setter,為屬性注入值。
step3:若 bean 實現了beannameaware 介面,則會執行介面方法 setbeanname(string beanid),使 bean 類可以獲取其在容器中的 id 名稱。
step4:若 bean 實現了 beanfactoryaware 介面,則執行介面方法 setbeanfactory(beanfactory factory),使 bean 類可以獲取到beanfactory 物件。
step5 : 若 定 義 並 注 冊 了 bean 後 處 理 器 beanpostprocessor , 則 執 行 接 口 方 法
postprocessbeforeinitialization()。
step6:若 bean 實現了 initializingbean 介面,則執行介面方法 afterpropertiesset ()。該方法在 bean 的所有屬性的 set 方法執行完畢後執行,是 bean 初始化結束的標誌,即 bean 例項化結束。
step7:若設定了 init-method 方法,則執行。
step8 : 若 定 義 並 注 冊 了 bean 後 處 理 器 beanpostprocessor , 則 執 行 接 口 方 法
postprocessafterinitialization()。
step9:執行業務方法。
step10:若bean 實現了 disposablebean 介面,則執行介面方法 destroy()。
step11:若設定了 destroy-method 方法,則執行。
介面:
package com.bjpowernode.ba07;
public
inte***ce isomeservice
介面實現類:
package com.bjpowernode.ba07;
import org.springframework.beans.bean***ception;
import org.springframework.beans.factory.beanfactory;
import org.springframework.beans.factory.beanfactoryaware;
import org.springframework.beans.factory.beannameaware;
import org.springframework.beans.factory.disposablebean;
import org.springframework.beans.factory.initializingbean;
public
class
someserviceimpl
implements
isomeservice, beannameaware, beanfactoryaware, initializingbean, disposablebean
public
void
setbdao(string bdao)
public
someserviceimpl()
@override
public
void
dosome()
public
void
setup()
public
void
teardown()
@override
public
void
setbeanname(string name)
@override
public
void
setbeanfactory(beanfactory beanfactory) throws bean***ception
@override
public
void
afterpropertiesset() throws exception
@override
public
void
destroy() throws exception
}
mybeanpostprocessor:
package com.bjpowernode.ba07;
import org.springframework.beans.bean***ception;
import org.springframework.beans.factory.config.beanpostprocessor;
public
class
mybeanpostprocessor
implements
beanpostprocessor
@override
public object postprocessafterinitialization(final object bean, string beanname)
throws bean***ception
}
配置檔案:
<?xml version="1.0" encoding="utf-8"?>
xmlns=""
xmlns:xsi=""
xsi:schemalocation="
/spring-beans.xsd">
id="myservice"
class="com.bjpowernode.ba07.someserviceimpl"
init-method="setup"
destroy-method="teardown">
name="adao"
value="aaa"/>
name="bdao"
value="bbb"/>
bean>
class="com.bjpowernode.ba07.mybeanpostprocessor"/>
beans>
測試類:
package com.bjpowernode.ba07;
import org.junit.test;
public
class
mytest
}測試的結果:
.core
.env
.standardenvironment).
log4j:warn please initialize the log4j system properly.
step1:執行無參構造器
step2:執行setter
step2:執行setter
step3:獲取到bean的id = myservice
step4:獲取到beanfactory容器
step5:執行 ----before---()方法
step6:bean初始化完畢了
step7:初始化完畢之後
step8:執行 ----after---()方法
step9:執行dosome()方法
step10:實現介面的銷毀之前
step11:銷毀之
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 方法...