使用標簽的init-method和destroy-method屬性
在<bean> 標簽中,有init-method和destroy-method屬性,通過設置這兩個屬性的值,可以很 方便的指定該受管Bean的缺省的初始化方法和析構方法。
要給應用中每個Bean都指定init-method和destroy-method屬性,那將是一個麻煩的工作,要簡化配置 ,可以通過<beans>標簽的default-init-method和default-destroy-method屬性來為其范圍內的所 有受管Bean制定相同的初始化方法和析構方法。
下面的范例展示如何使用<bean>標簽的init-method和destroy-method屬性。
創建java工程,添加Spring開發能力,創建ioc.test包。創建Animal類,為其添加name、age成員、 Geter和Seter方法、speak方法後,再添加一個初始化方法和一個析構方法,名字可以任意,這裡為Start 和end。代碼如下:
代碼
/**
*
*/
package ioc.test;
/**
* @author zhangyong
*
*/
public class Animal{
private String name;
private int age;
public String speak(){
return "我的名字:"+this.name+",我 的年齡:"+this.age;
}
public void start() throws Exception {
System.out.println("初始化方法start()正在運行!");
}
public void end() throws Exception {
System.out.println("析構方法end()正在運行!");
}
//Geter和Seter省略
}
/**
*
*/
package ioc.test;
/**
* @author zhangyong
*
*/
public class Animal{
private String name;
private int age;
public String speak(){
return "我的名字:"+this.name+",我的年齡:"+this.age;
}
public void start() throws Exception {
System.out.println("初始化方法start()正在運行!");
}
public void end() throws Exception {
System.out.println("析構方法end()正在運行! ");
}
//Geter和Seter省略
}
配置文件中配置好bean,並為其指定響應的預處理方法和析構方法:
代碼
<?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-2.5.xsd">
<bean id="animal" class="ioc.test.Animal" init-method="start" destroy-method="end">
<property name="age" value="5"></property>
<property name="name" value="豬"></property>
</bean>
</beans>
<?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-2.5.xsd">
<bean id="animal" class="ioc.test.Animal" init-method="start" destroy-method="end">
<property name="age" value="5"></property>
<property name="name" value="豬"></property>
</bean>
</beans>
創建含有主方法的測試類,代碼如下:
代碼
/**
*
*/
package ioc.test;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* @author zhangyong
*
*/
public class TestMain {
public static void main(String[] args) {
AbstractApplicationContext ac = new ClassPathXmlApplicationContext ("applicationContext.xml");
//注冊容器關閉鉤子,才能關掉容器,調用 析構方法
ac.registerShutdownHook();
Animal animal = (Animal) ac.getBean("animal");
System.out.println(animal.speak());
}
}
/**
*
*/
package ioc.test;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* @author zhangyong
*
*/
public class TestMain {
public static void main(String[] args) {
AbstractApplicationContext ac = new ClassPathXmlApplicationContext ("applicationContext.xml");
//注冊容器關閉鉤子,才能關掉容器,調用 析構方法
ac.registerShutdownHook();
Animal animal = (Animal) ac.getBean("animal");
System.out.println(animal.speak());
}
}
運行主類,結果如下:
需要注意的是:要看到析構方法的輸出,也必須要注冊關閉鉤子。
本文地址:http://www.blogjava.net/cmzy/archive/2008/07/29/218059.html)