在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方法来执行销毁操作。