•Bean 销毁(Destroy)
•@PreDestroy 标注方法
•实现DisposableBean 接口的destroy() 方法
•自定义销毁方法
•XML 配置:<bean destroy=”destroy” ... />
•Java 注解:@Bean(destroy=”destroy”)
•Java API:AbstractBeanDefinition#setDestroyMethodName(String)
思考:假设以上三种方式均在同一Bean 中定义,那么这些方法的执行顺序是怎样?
以上3种方式都是由applicationContext.close()触发的,applicationContext.close()#doClose()#destroyBeans()#destroySingletons()
DefaultListableBeanFactory实现类中统计下所有实现DisposableBean然后逐一销毁
@PreDestory找调用它PreDestory的类CommonAnnotationBeanPostProcessor InitDestroyAnnotationBeanPostProcessor