1. 程式人生 > >Spring bean的生命週期init和destory

Spring bean的生命週期init和destory

Bean生命週期:定義 --- 初始化 --- 使用 --- 銷燬
一.初始化:
方法1.實現org.springframework.beans.foctory.InitializingBean介面,覆蓋afterPropertiesSet方法。系統會自動查詢afterPropertiesSet方法,執行其中的初始化操作
方法2.配置init-method
例如設定bean中init-method="init"那麼在初始化過程中就會呼叫相應class指定類的init()方法進行初始化工作

二 銷燬(與初始化類似)
方法1.實現org.springframework.beans.foctory.DisposableBean介面,覆蓋destory方法。
方法2.配置destory-method

三 配置全域性初始化、銷燬方法(屬於預設配置,參考截圖)
注意:
1.當三種方式同時使用時,全域性(預設的)初始化銷燬方法會被覆蓋。
2.另外實現介面(InitializingBean,DisposableBean)的初始化/銷燬方式會先於配置檔案中的初始化/銷燬方式執行。
3.xml中配置了,但是類檔案即使沒有以上介面和全域性初始化方法也是可以編譯執行的,bean中配置了卻沒有實現bean中的init和destory等會報錯。
例子:
public class BeanLifeCycle implements InitializingBean,DisposableBean{
	public void start(){
		System.out.println("Bean start");
	}
	public void stop(){
		System.out.println("Bean stop");
	}
	public void destroy() throws Exception {
		System.out.println("destory");
	}
	public void afterPropertiesSet() throws Exception {
		System.out.println("after properties");
	}
	public void defaultInit(){
		System.out.println("defaultInit");
	}
	public void defaultDestory(){
		System.out.println("defaultDestory");
	}
}
XML檔案:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd" 
        default-init-method="defaultInit" default-destroy-method="defaultDestory">
    
    <bean id="beanLifeCycle" class="com.daley.springprac.prac1.lifecyle.BeanLifeCycle" init-method="start" destroy-method="stop"/>
</beans>

優先順序:介面>區域性(有區域性就不執行全域性預設方法)

demo地址(資料夾prac1):https://github.com/DaleyChao/SpringPractice/tree/a1ee3afc0accc8ae796e17dea5edf8fdbeb61fa7