除了自定义的destroy-method.还可以实现DisposableBean接口,来回调bean销毁时候执行的方法,这个接口有一个destroy方法,生命周期是是destroy----bean销毁---自定义的destroy方法
SimpleBean.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
package ch5.destroy;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
public class SimpleBean implements InitializingBean,DisposableBean {
public void afterPropertiesSet() throws Exception {
System.out.println( "this is info from afterpropertiesSet from SimpleBean" );
}
private String name;
private String sex;
private String age;
public void destroyMethod(){
System.out.println( "this is info from customer destroy method" );
}
public void destroy(){
System.out.println( "this is info from destroy method" );
}
public String getAge() {
return age;
} public void setAge(String age) {
this .age = age;
} public String getName() {
return name;
} public void setName(String name) {
this .name = name;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this .sex = sex;
} } |
配置文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<? 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.0.xsd" >
< bean id = "SimpleBean" class = "ch5.destroy.SimpleBean" destroy-method = "destroyMethod" >
< property name = "name" >
< value >gaoxiang</ value >
</ property >
< property name = "sex" >
< value >male</ value >
</ property >
< property name = "age" >
< value >26</ value >
</ property >
</ bean >
</ beans >
|
测试代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
package ch5.destroy;
import java.io.File;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.xml.XmlBeanFactory;
import org.springframework.core.io.FileSystemResource;
public class TestSpring{
public static void main(String args[]) throws Exception{
//获取bean factory
ConfigurableListableBeanFactory factory=(ConfigurableListableBeanFactory)getBeanFactory(); //使用子beanFactory
SimpleBean bean1=(SimpleBean)factory.getBean( "SimpleBean" );
System.out.println( "before destroy" );
factory.destroySingletons();
System.out.println( "after destory" );
}
public static BeanFactory getBeanFactory(){
//获取bean factory
String realpath= "" ;
//加载配置项
realpath=System.getProperty( "user.dir" )+File.separator+ "src" +File.separator+ "ch5/destroy" +File.separator+ "applicationContext.xml" ;
ConfigurableListableBeanFactory factory= new XmlBeanFactory( new FileSystemResource(realpath));
return factory;
}
} |
结果:
this is info from afterpropertiesSet from SimpleBean
before destroy
this is info from destroy method
this is info from customer destroy method
after destory