> 文章列表 > spring bean标签中的init-method和destroy-method

spring bean标签中的init-method和destroy-method

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。