Spring part 2 Bean的生命週期

2021-08-27 22:02:23 字數 3110 閱讀 7694

spring中bean的完整生命週期

1) instantiate bean物件例項化

2) populate properties 封裝屬性

3) 如果bean實現beannameaware 執行 setbeanname

5) 如果存在類實現 beanpostprocessor(後處理bean) ,執行postprocessbeforeinitialization

6) 如果bean實現initializingbean 執行 afterpropertiesset 

7) 呼叫指定初始化方法 

8) 如果存在類實現 beanpostprocessor(處理bean) ,執行postprocessafterinitialization

9) 執行業務處理

10)如果bean實現 disposablebean 執行 destroy

11)呼叫指定銷毀方法 

介面

public inte***ce ilifecycle
實現類

public lifecycleimpl()

public void myinit()

public void mydestroy()

@override

public void method()

public void setproperty(string info)

@override

public void setbeanname(string name)

@override

} @override

public void afterpropertiesset() throws exception

@override

public void destroy() throws exception }

後處理bean,對容器內所有bean有效

public class beanprocessor implements beanpostprocessor 

@override

public object postprocessafterinitialization(object bean, string beanname) throws bean***ception

}

配置

測試

@test

public void demo1()

/**1) instantiate bean物件例項化

2) populate properties 封裝屬性

3) 如果bean實現beannameaware 執行 setbeanname.--->lifecycle

5) 如果存在類實現 beanpostprocessor(後處理bean) ,執行postprocessbeforeinitialization

6) 如果bean實現initializingbean 執行 afterpropertiesset

7) 呼叫指定初始化方法

8) 如果存在類實現 beanpostprocessor(處理bean) ,執行postprocessafterinitialization

9) 執行業務處理

22:27:22,535 info defaultlistablebeanfactory:444 - destroying singletons in org.springframework.beans.factory.support.defaultlistablebeanfactory@731d2572: defining beans [lifecycle,demo02.beanprocessor#0]; root of factory hierarchy

10)如果bean實現 disposablebean 執行 destroy

11)呼叫指定銷毀方法

*/

可以在實現beanpostprocessor類裡對原有業務方法進行增強處理

public class beanprocessor implements beanpostprocessor 

@override

public object postprocessafterinitialization(final object bean, string beanname) throws bean***ception

return method.invoke(bean, args);

}});

} return bean;

}}

輸出:

/**

1) instantiate bean物件例項化

2) populate properties 封裝屬性

3) 如果bean實現beannameaware 執行 setbeanname.--->lifecycle

5) 如果存在類實現 beanpostprocessor(後處理bean) ,執行postprocessbeforeinitialization

6) 如果bean實現initializingbean 執行 afterpropertiesset

7) 呼叫指定初始化方法

8) 如果存在類實現 beanpostprocessor(處理bean) ,執行postprocessafterinitialization

增強method***********************************====

9) 執行業務處理

09:10:45,408 info defaultlistablebeanfactory:444 - destroying singletons in org.springframework.beans.factory.support.defaultlistablebeanfactory@7e859a68: defining beans [lifecycle,demo02.beanprocessor#0]; root of factory hierarchy

10)如果bean實現 disposablebean 執行 destroy

11)呼叫指定銷毀方法

*/

IOC操作Bean管理2

恢復內容開始 spring有兩種型別的bean,一種普通型別的bean另外一種工廠bean factory bean 二者的區別在於這句 普通xm中bean在class裡定義什麼 book型別 型別的bean,則在 測試引用得到時 book 時就用什麼型別的bean book book contes...

J2EE中 實體BEAN和會話BEAN的區別

乙個session bean 代表與客戶程式的乙個短暫的會話,而且可能執行資料庫讀寫操作。乙個session bean 可能會自己呼叫jdbc 或者它可能使用entity bean 來完成此種呼叫。在後者這種情況下,這個session bean 是該entity bean 的客戶。乙個session...

spring筆記2 bean引用其他bean

在 spring筆記1 基於spring框架的第乙個程式 一文中,在spring conf.xml中配置bean時,我們向這個bean傳入了一些引數,但是這些引數都是一些簡單資料型別,如int string等,本文將說明如何將乙個bean作為乙個引數傳給另外乙個bena,即bean引用其他bean。...