spring bean標簽中的init-method和destroy-method詳解

1 背景介紹

在很多項目中,經常在xml配置文件中看到init-method 或者 destroy-method 。因此整理收集下,方便以後參考和學習。可以使用 init-method 和 destroy-method 在bean 配置文件屬性用於在bean初始化和銷毀某些動作時。這是用來替代 InitializingBean和DisposableBean接口。

init-method 用於指定bean的初始化方法。 spring 容器會幫我們實例化對象,實例化對象之後,spring就會查找我們是否配置瞭init-method。如果在標簽配置瞭init-method,spring就會調用我們配置的init-method 方法,進行bean的初始化。需要註意的是,構建方法先執行,執行完後就會執行 init-method 。

2 init-method

xml配置

    <bean id="testService" class="com.test.TestService" init-method="myInit" destroy-method="myDestroy">
    </bean>
public class TestService {

    public TestService(){
        System.out.println("實例化:TestService");
    }

    public void myInit(){
        System.out.println("初始化:TestService");
    }

    public void myDestroy(){
        System.out.println("銷毀:TestService");
    }
}

測試

public class App 
{
    public static void main( String[] args )
    {
    	ConfigurableApplicationContext context = 
		new ClassPathXmlApplicationContext(new String[] {"applicationContext.xml"});
	
    	TestService cust = (CustomerService)context.getBean("testService");
    	
    	System.out.println("hhhhh");
    	
    	//context.close();
    }
}

輸出:

實例化:TestService
初始化:TestService
hhhhh

3 destroy-method

public class App 
{
    public static void main( String[] args )
    {
    	ConfigurableApplicationContext context = 
		new ClassPathXmlApplicationContext(new String[] {"applicationContext.xml"});
	
    	TestService cust = (CustomerService)context.getBean("testService");
    	
    	System.out.println("hhhhh");
    	
    	context.close();
    }
}

spring上下文關閉時候,才會進行銷毀。

輸出:

實例化:TestService
初始化:TestService
hhhhh
銷毀:TestService

4 總結

建議使用init-method 和 destroy-methodbean 在Bena配置文件,而不是執行 InitializingBean 和 DisposableBean 接口,也會造成不必要的耦合代碼在Spring。

到此這篇關於spring bean標簽中的init-method和destroy-method的文章就介紹到這瞭,更多相關spring  init-method和destroy-method內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: