天天看點

【spring架構】bean的生命周期

生命周期:

a)lazy-init(不重要)

指的是在容器進行初始化的時候它不進行初始化

ApplicationContext實作的預設行為就是在啟動時将所有singleton bean提前進行執行個體化。提前執行個體化意味着作為初始化過程的一部分,ApplicationContext執行個體會建立并配置所有的singleton bean。通常情況下這是件好事,因為這樣在配置中的任何錯誤就會即刻被發現(否則的話可能要花幾個小時甚至幾天)。

有時候這種預設處理可能并不是你想要的。如果你不想讓一個singleton bean在ApplicationContext初始化時被提前執行個體化,那麼可以将bean設定為延遲執行個體化。一個延遲初始化bean将告訴IoC 容器是在啟動時還是在第一次被用到時執行個體化。

在XML配置檔案中,延遲初始化将通過<bean/>元素中的lazy-init屬性來進行控制。例如:

隻有在你的應用頻繁啟動,而且每次啟動的時候特别慢,就可以用這個。

b)init-method destroy-methd 不要和 prototype一起用(了解)

我們在UserService方法中添加init與destory方法:

在beans.xml中配置:

一旦我們的容器對這個bean進行初始化的時候會首先調用init-method屬性指定的方法,容器關閉的時候會調用destroy-method屬性指定的方法。

測試:

測試結果:

init

destroy

發現調用了初始化方法和結束方法。

注意:不要和scope="prototype" 一起用,會影響。具體為什麼現在不必考慮。