Spring回调方法DisposableBean接口
除了自定义的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