除了自定义的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