這篇介紹Bean的init-methoddestroy-method屬性。

init-method屬性定義bean在被初始化時會呼叫的方法。

destroy-method屬性定義Bean在被消滅時會呼叫的方法。

 

範例

Beans.xml

...

第9行定義了bean的init-method及destroy-method,其參數分別對應了HelloWrold.java的init()方法及desroy()方法。

 

HelloWorld.java

...

第14~16行的init()方法在Bean實例化時會被呼叫。

第18~20行的destroy()方法則是在bean消滅前會被呼叫。

 

MainApp.java

...

由於要呼叫registerShutdownHook()方法來關閉這個context來消滅這個bean,所以第9行要改用AbstractApplicationContext (之前範例都是用ApplicationContext)。

第11行取得bean實例。

第12行呼叫HelloWorld物件的getMessage()方法

第13行呼叫registerShutdownHook()方法註冊一個JVM shutdown hook來關閉context,會再呼叫doClose()方法來關閉並消滅其中的bean。
(這邊只要了解registerShutdownHook()方法會用來消滅bean就行了。)

 

MainApp.java的執行結果如下

可以看到HelloWorld.java的init()方法會在bean實例化時被呼叫,destroy()方法在被消滅時被呼叫。
(然而在registerShutdownHook()方法後再次呼叫getMessage()方法仍可印出訊息,所以bean的消滅狀態我還不是很確定)

 

若應用程式中有很多個bean,且初始及消滅都給予同樣的命名,例如都叫init()及destroy(),則可以在<beans...> ... </beans>中宣告default-init methoddefault-destroy-method來統一指定所有bean的初始及消滅方法。參考下面的Beans.xml第6~7行的設定。

...

 

不過這能利用在什麼地方呢? 目前我也不知道(2015/11/04)。

 

文章標籤
創作者介紹

菲比傻大姐&肉豬

phoebelin0606 發表在 痞客邦 PIXNET 留言(0) 人氣()