目录
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。
做猪小侠源码的代理,提供一站式服务
如果你不懂得搭建网站或者服务器,小程序,源码之类的怎么办? 第一通过本站学习各种互联网的技术 第二就是联系客服,我帮帮你搭建(当然要收取部分的费用) 第三成为我们的代理,我们提供整套的服务。