本篇文章主要介紹了在spring中通過配置init-method和destroy-method方法來實作Bean的初始化和銷毀時附加的操作。 在java中,我們并不需要去管理記憶體或者變量,而在C或C++中,可以通過new和delete等方式來建立和删除變量或者對象。在Spring中,如果想要對一個bean進行初始化和結束附加一定的操作,則可以使用上述的兩個方法來實作。
在介紹這兩個方法前,讀者需要了解Spring中bean的生命周期,最常使用的兩種生命周期是:singleton和prototype。
在一個應用上下文容器中,所有的線程或對象通過getBean獲得指定id的Bean,得到的都是同一個執行個體。
這種的Bean執行個體完全由應用上下文容器來控制聲明周期,使用者無論何時何地得到的執行個體都是同一個。
舉個例子,釣魚島隻有一個,日本說是他們的,中國說是中國的。雖然兩方存在争議,都覺得自己有所有權,但是釣魚島隻有一個,是以我們所說的釣魚島跟日本所說的釣魚島就是同一個島:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnauYTMygzN0ADN0kTMzETNy8CXxATNxAjMvwFN2ATO0QzLcd2bsJ2Lc12bj5yZvxmY0lmbj5ycldWYtl2Lc9CX6MHc0RHaiojIsJye.jpg)
這種類型的Bean會在每一次都建立一個新的執行個體,而執行個體的生命周期僅僅由應用上下文控制其初始化和裝配,一旦初始化成功,控制權就會交給使用者。
常見的場景,例如車票或者電影票Bean執行個體,每次都應該是一個新的執行個體,因為一個票隻歸屬于同一個人。
通過上面對生命周期的講解,可以了解到,我們在spring中使用init-method和destroy-method方法時,僅僅在預設情況即singleton模式下,destroy-method才會起作用。
舉個例子,一個舞台Bean,我們想在使用舞台前打開燈光,在舞台使用後關閉燈光再拆掉舞台。就可以通過init-method和destroy-method來指定方法。
<a></a>
配置bean.xml
在主函數中,不要忘記應用上下文容器的關閉,隻有這樣,才會出發destroy-method的執行。
當Bean是singleton模式或者預設時,會得到如下的結果:
當是prototype模式時,得到如下的結果:
1 《Spring in Action》