首页头条资讯 互联网 正文

销毁Spring Bean:销毁Bean的基本操作有哪些?

3个月前 ( 09-02 ) 71 0条评论

Spring 源码解读分析中上一篇主要介绍关于Bean的初始化以及延迟初始化,接下来分析Bean的销毁阶段-和Bean 的初始化对应!Bean的销毁方式也有三种

其中可以看到@preDestory Java 标准注解销毁,按照字面意思就是按照我们之前的来进行操作。这里的Destory 和我们的这里的销毁其实有点冲突。@preDestpry 主要是指Bean 对象被销毁,也就是说Bean对象被回收之前,也就是被Java GC 之后才被操作。

思考:假设以上三种方式均在同一Bean中定义,那么这些方法的执行顺序是怎样?

案例分析

其实这里我们可以大胆猜测,Bean 的销毁和 Bean 初始化顺序对应 注解标注> 接口实现 > 自定义

销毁Spring Bean:销毁Bean的基本操作有哪些?销毁Spring Bean:销毁Bean的基本操作有哪些?

  • 实现 DisposableBean 接口的destroy()方法
销毁Spring Bean:销毁Bean的基本操作有哪些?

  • 自定义方式实现【这里以Java 注解为案例】
销毁Spring Bean:销毁Bean的基本操作有哪些?

销毁Spring Bean:销毁Bean的基本操作有哪些?

执行结果分析和猜测结果一样

当我们输出应用上下文准备关闭的时候和已关闭之间,也就是我们调用close()方法的过程中上述方法会被逐一关闭掉

销毁Spring Bean:销毁Bean的基本操作有哪些?

总结

通过三种不同的Bean的销毁方案,同时也对比初始化三种方案来做一个参照,会发现注解总是优先,就是Java 标注注解优化;然后Spring 里面DisposableBean 接口是第二位,第三位就是我们自定义的实现方式!这三种方式可以和Bean 的初始化过程一起去对照了解~

销毁Spring Bean:销毁Bean的基本操作有哪些?

源码地址:https://gitee.com/iByteCoding/thinking-in-spring

文章版权及转载声明

本文作者:yuneu 网址:http://www.yuneu.com/post/259.html发布于 3个月前 ( 09-02 )
文章转载或复制请以超链接形式并注明出处。

发表评论

评论列表 (暂无评论,71人围观)参与讨论

还没有评论,来说两句吧...