我們先講不含後置處理器的:
(1)通過構造器建立bean例項(無引數構造)
(2)為bean的屬性設定值和對其他bean引用(呼叫set方法)
(3)呼叫bean的初始化的方法(需要進行配置初始化的方法)。
(4) bean可以使用了物件獲取到了).
(5)當容器關閉時候,呼叫bean的銷毀的方法(需要進行配置銷毀的方法)
先建立乙個我們要呼叫的bean 然後我會在各個步驟上進行輸出。
package cn.zsp.spring5.bean;
public
class
order
public
void
setpname
(string pname)
public
void
initmethod()
public
void
destroymethod()
}
配置xml檔案,特別注意這裡的初始化還有銷毀方法方法我們要自己設定:
<?xml version="1.0" encoding="utf-8"?>
xmlns
=""xmlns:xsi
=""xsi:schemalocation
=" /spring-beans.xsd"
>
"order"
class
="cn.zsp.spring5.bean.order"
init-method
="initmethod"
destroy-method
="destroymethod"
>
name
="pname"
value
="zsp"
>
property
>
bean
>
beans
>
第三步使用測試類:沒啥說的,就是記得呼叫銷毀方法
這是演示結果
在前面的基礎上多了創造乙個後置處理器的類:注意要繼承beanpostprocessor 並且重寫兩個方法
(1)通過構造器建立bean例項(無引數構造)
(2)為bean的屬性設定值和對其他bean引用(呼叫set方法)
(3)把bean例項傳遞bean後置處理器的方法
(4)呼叫bean的初始化的方法(需要進行配置初始化的方法)u
(5))把bean例項傳遞bean後置處理器的方法
(6) bean可以使用了(物件獲取到了)u
(7)當容器關閉時候,呼叫bean的銷毀的方法(需要進行配置銷毀的方法)以
package cn.zsp.spring5.bean;
import org.springframework.beans.bean***ception;
import org.springframework.beans.factory.config.beanpostprocessor;
import org.springframework.lang.nullable;
public
class
mybeanpost
implements
beanpostprocessor
@override
public object postprocessafterinitialization
(object bean, string beanname)
throws bean***ception
}
然後修改一下配置檔案:
package cn.zsp.spring5.bean;
import org.springframework.beans.bean***ception;
import org.springframework.beans.factory.config.beanpostprocessor;
import org.springframework.lang.nullable;
public class mybeanpost implements beanpostprocessor
@override
public object postprocessafterinitialization(object bean, string beanname) throws bean***ception
}
Bean的生命週期
一般來說,prototype作用域的bean,spring僅僅負責建立,當建立了bean例項之後,該例項將完全交給客戶端 去管理,spring容器不再跟蹤其生命週期。而對於singleton作用域的bean,每次客戶端 請求時都會共享同乙個bean例項,因此singleton作用域的bean的生命週...
Bean的生命週期
所有的bean都可以宣告自定義初始化方法和銷毀方法 init method 初始化就會呼叫的方法 destroy method 撤銷呼叫的方法 public void start public void stop 上面的方法只能需要在bean中宣告init method和destroy method...
Bean 的生命週期
step1 呼叫無參構造器,建立例項物件。step2 呼叫引數的setter,為屬性注入值。step3 若 bean 實現了beannameaware 介面,則會執行介面方法 setbeanname string beanid 使 bean 類可以獲取其在容器中的 id 名稱。step4 若 bea...