在Spring中如果某个bean在初始化之后,或销毁之前要做一些额外操作可以为该bean配置初始化和销毁的我方法,在这些方法中完成需要的功能。
实验:
通过断点调试模式,测试初始化方法和销毁方法的执行
package cn.tedu.beans; public class ProdDao { public ProdDao() { System.out.println("ProdDao 被创建。。。"); } public void init() { System.out.println("init。。连接数据库。。。。。"); } public void destory() { System.out.println("destory。。断开数据库。。。。。"); } public void addProd() { System.out.println("增加商品。。"); } public void updateProd() { System.out.println("修改商品。。"); } public void delProd() { System.out.println("删除商品。。"); } public void queryProd() { System.out.println("查询商品。。"); } }
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd" default-lazy-init="true" > <bean id="prodDao" class="cn.tedu.beans.prodDao" init-method="init" destroy-method="destory"></bean> </beans>
@Test /** * SpringIOC 初始化和 销毁方法 */ public void test10(){ ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); ProdDao prodDao = (ProdDao) context.getBean("prodDao"); prodDao.addProd(); context.close(); }
执行结果:
**Spring中关键方法的执行顺序:
在Spring创建bean对象时,先创建对象(通过无参构造或工厂),之后立即调用init方法来执行初始化操作,之后此bean就可以哪来调用其它普通方法,而在对象销毁之前,spring容器调用其destory方法来执行销毁操作。