本文以xml配置的方式来记录Spring的初始化和销毁bean的方法.
Java Bean:
package com.oxygen.dao.impl; import com.oxygen.dao.BookDao; public class BookDaoImpl implements BookDao { public void save() { System.out.println("Book Dao Save..."); } public void init(){ System.out.println("BookDaoImpl init..."); } public void destroy(){ System.out.println("BookDaoImpl destroy..."); } }
注意BookDaoImpl这个java类中的init()和destroy()方法,这两个方法是自己写的.
xml配置:告诉spring容器,谁是初始化方法,谁是销毁bean的方法
<bean id="bookDao" class="com.oxygen.dao.impl.BookDaoImpl" init-method="init" destroy-method="destroy"/>
测试类:
package com.oxygen; import com.oxygen.dao.BookDao; import com.oxygen.dao.OrderDao; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class App2 { public static void main(String[] args) { ClassPathXmlApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml"); BookDao bookDao = (BookDao) context.getBean("bookDao"); bookDao.save(); context.close(); } }
注意:
上面的测试类用的是ClassPathXmlApplicationContext这个对象,而不是ApplicationContext。
在xml文件配置之后,初始化方法init()就会自动运行.
在xml文件配置之后,销毁bean的方法destroy()不会自动运行。
要想destory一个java bean对象有两者方式;
1.关闭spring容器:context.close();
context.close();
2.给Spring容器注册一个钩子:
context.registerShutdownHook();
无论init()和destroy()或者registerShutdownHook()的位置在哪里,init都会save()先执行.
destroy()或者registerShutdownHook()都会在save()方法执行完成之后执行。
标签:xml,Spring,init,Bean,bean,context,destroy,public From: https://www.cnblogs.com/majestyking/p/16796601.html