33、Spring5.x源码之旅三十三销毁回调的N种方式

  • DisposableBean接口方法
  • PreDestroy注解方法
  • AutoCloseable接口方法
  • 设置setDestroyMethodName
  • 方法名字推断出来的

DisposableBean接口方法

public class DestroyBean implements DisposableBean {
   
     
    @Override
    public void destroy() throws Exception {
   
     
        System.out.println("DestroyBean DisposableBean的销毁回调");
    }

}

*

PreDestroy注解方法

public class DestroyBean {
   
     

    @PreDestroy
    public void des() {
   
     
        System.out.println("DestroyBean @PPreDestroy的销毁回调");
    }
}

*

AutoCloseable接口方法

public class DestroyBean implements AutoCloseable {
   
     
   
    public void close() {
   
     
        System.out.println("DestroyBean AutoCloseable的销毁回调");
    }

}

*

设置setDestroyMethodName

比如我用处理器来设置:
*
确保有这个名字的方法:

public class DestroyBean {
   
     

    public void myCustomDes(){
   
     
        System.out.println("DestroyBean 自定义销毁回调");
    }

}

*

方法名字推断出来的

首先必须是bean注解的。
*
然后得有close或者shutdown方法,不能同时,优先close

  public class DestroyBean {
   
     
    public void close() {
   
     
        System.out.println("DestroyBean 根据方法名字close推断出来的销毁回调");
    }

}

*

  public class DestroyBean {
   
     
    public void shutdown() {
   
     
        System.out.println("DestroyBean 根据方法名字shutdown推断出来的销毁回调");
    }
}

*

可能还有其他的方法,看源码就好啦,里面都有,我就不演示了。

好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵。