@component
public
class
carpublic
void
init()
public
void
detory()
}
/**
* bean的生命週期:
* bean建立---初始化----銷毀的過程
* 容器管理bean的生命週期;
* 我們可以自定義初始化和銷毀方法;容器在bean進行到當前生命週期的時候來呼叫我們自定義的初始化和銷毀方法
* * 構造(物件建立)
* 單例項:在容器啟動的時候建立物件
* 多例項:在每次獲取的時候建立物件\
* 初始化:
* 物件建立完成,並賦值好,呼叫初始化方法。。。
* 銷毀:
* 單例項:容器關閉的時候
* 多例項:容器不會管理這個bean;容器不會呼叫銷毀方法;
* * 1)、指定初始化和銷毀方法;
* 通過@bean指定init-method和destroy-method;
*/@componentscan
("com.atguigu.bean"
)@configuration
public
class
mainconfigoflifecycle
}
測試類
public
class
ioctest_lifecycle
}
@component
public
class
catimplements
initializingbean
,disposablebean
@override
public
void
destroy()
throws exception
@override
public
void
afterpropertiesset()
throws exception
}
/**
* 2)、通過讓bean實現initializingbean(定義初始化邏輯),
* disposablebean(定義銷毀邏輯);
*/@componentscan
("com.atguigu.bean"
)//採用包掃瞄方式
@configuration
public
class
mainconfigoflifecycle
測試類
public
class
ioctest_lifecycle
}
@component
public
class
dog//物件建立並賦值之後呼叫
@postconstruct
public
void
init()
//容器移除物件之前
@predestroy
public
void
detory()
}
/**
* 3)、可以使用jsr250;
* @postconstruct:在bean建立完成並且屬性賦值完成;來執行初始化方法
* @predestroy:在容器銷毀bean之前通知我們進行清理工作
*/@componentscan
("com.atguigu.bean"
)@configuration
public
class
mainconfigoflifecycle
測試類
public
class
ioctest_lifecycle
}
/**
* 後置處理器:初始化前後進行處理工作
* 將後置處理器加入到容器中
*/@component
public
class
mybeanpostprocessor
implements
beanpostprocessor
@override
public object postprocessafterinitialization
(object bean, string beanname)
throws bean***ception
}
/**
* beanpostprocessor.postprocessbeforeinitialization
* 初始化:
* 物件建立完成,並賦值好,呼叫初始化方法。。。
* beanpostprocessor.postprocessafterinitialization
* 4)、beanpostprocessor【inte***ce】:bean的後置處理器;
* 在bean初始化前後進行一些處理工作;
* postprocessbeforeinitialization:在初始化之前工作
* postprocessafterinitialization:在初始化之後工作
*/@componentscan
("com.atguigu.bean"
)@configuration
public
class
mainconfigoflifecycle
}
beanpostprocessor原理
遍歷得到容器中所有的beanpostprocessor;挨個執行beforeinitialization,
一但返回null,跳出for迴圈,不會執行後面的beanpostprocessor.postprocessorsbeforeinitialization
beanpostprocessor原理
populatebean
;給bean進行屬性賦值
initializebean
beanpostprocessor在spring底層的使用
@component
public
class
dogimplements
//物件建立並賦值之後呼叫
@postconstruct
public
void
init()
//容器移除物件之前
@predestroy
public
void
detory()
@override
public
void
throws bean***ception
}
Spring Bean生命週期
1.容器尋找bean的定義資訊並且將其實例化。2.受用依賴注入,spring按照bean定義資訊配置bean的所有屬性。3.如果bean實現了beannameaware介面,工廠呼叫bean的setbeanname 方法傳遞bean的id。4.如果bean實現了beanfactoryaware介面,...
spring bean生命週期
生命週期 定義,初始化,使用,銷毀 一.初始化 方法1.實現org.springframework.beans.foctory.initializingbean介面,覆蓋afterpropertiesset方法。系統會自動查詢afterpropertiesset方法,執行其中的初始化操作 方法2.配...
Springbean生命週期
springbean的完整生命週期大致如下 1 首先例項化 beanfactorypostprocessor的實現類,執行它的postprocessorbeanfactory方法 2 例項化beanpostprocessor 的實現類 3 例項化 instantiationawarebeanpost...