目录
一、Spring 如何能调用到对应的销毁方法?
1. 第一种通过容器的关闭,调用销毁方法
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(DisMainClass.class);
//第一种容器关闭会调用销毁
context.close();
2. 第二种进程正常关闭时,调用销毁的方法
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(DisMainClass.class);
//第二种进程正常关闭会销毁
context.registerShutdownHook();
二、定义销毁的方法有哪些呢?
1. 实现DisPosableBean接口
@Component
public class MyDisposableBean implements DisposableBean {
@Override
public void destroy() throws Exception {
System.out.println("我被销毁了");
}
}
2.在bean方法上加上@PreDestory注解
@Component
public class MyDisposableBean2 {
@PreDestroy
public void a() {
System.out.println("调用A后,我被销毁了");
}
}
3.MergedBeanDefinitionPostProcessor后置处理器设置销毁方法
@Component
public class MyMergeBdfPostProcesser implements MergedBeanDefinitionPostProcessor {
@Override
public void postProcessMergedBeanDefinition(RootBeanDefinition beanDefinition, Class<?> beanType, String beanName) {
if (beanName.equals("myDisposableBean3")){
beanDefinition.setDestroyMethodName("a");
}
}
}
@Component
public class MyDisposableBean3 {
public void a() {
System.out.println("MyMergeBdfPostProcesser-后置处理器销毁");
}
}
4. MergedBeanDefinitionPostProcessor后置处理器设置销毁方法为
(inferred)
@Comp