天天看點

【Spring實戰】—— 4 Spring中bean的init和destroy方法講解

本篇文章主要介紹了在spring中通過配置init-method和destroy-method方法來實作Bean的初始化和銷毀時附加的操作。 在java中,我們并不需要去管理記憶體或者變量,而在C或C++中,可以通過new和delete等方式來建立和删除變量或者對象。在Spring中,如果想要對一個bean進行初始化和結束附加一定的操作,則可以使用上述的兩個方法來實作。

  在介紹這兩個方法前,讀者需要了解Spring中bean的生命周期,最常使用的兩種生命周期是:singleton和prototype。

  在一個應用上下文容器中,所有的線程或對象通過getBean獲得指定id的Bean,得到的都是同一個執行個體。

  這種的Bean執行個體完全由應用上下文容器來控制聲明周期,使用者無論何時何地得到的執行個體都是同一個。

  舉個例子,釣魚島隻有一個,日本說是他們的,中國說是中國的。雖然兩方存在争議,都覺得自己有所有權,但是釣魚島隻有一個,是以我們所說的釣魚島跟日本所說的釣魚島就是同一個島:

【Spring實戰】—— 4 Spring中bean的init和destroy方法講解

  這種類型的Bean會在每一次都建立一個新的執行個體,而執行個體的生命周期僅僅由應用上下文控制其初始化和裝配,一旦初始化成功,控制權就會交給使用者。

  常見的場景,例如車票或者電影票Bean執行個體,每次都應該是一個新的執行個體,因為一個票隻歸屬于同一個人。

【Spring實戰】—— 4 Spring中bean的init和destroy方法講解

  

  通過上面對生命周期的講解,可以了解到,我們在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》