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!
推薦閱讀:
- Spring init-method與destroy-method屬性的用法解析
- 一文搞懂Spring Bean中的作用域和生命周期
- java的main方法中調用spring的service方式
- Spring的IOC控制反轉詳解
- 詳解SpringIOC容器中bean的作用范圍和生命周期