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