上一篇文章 Spring Bean 生命周期之我从哪里来 说明了我是谁?
和 我从哪里来?
的两大哲学问题,今天咱们要讨论一下终极哲学我要到哪里去?
初始化 Spring Bean 有三种方式:java
销毁 Spring Bean 一样有三种方式:面试
正所谓,天对地,雨对风; @PostConstruct 对 @PreDestroy;InitializingBean.afterPropertiesSet() 对 DisposableBean.destroy(); init-method 对 destroy-method;雷隐隐,雾蒙蒙;山花对海树,赤日对苍穹;平仄平仄平平仄,仄平仄平仄仄平,仄仄平……spring
感受讲到这不必讲下去了,一切清晰明了,但我还有话要说多线程
当 Spring Ioc 容器要移除 bean 时,销毁相关回调方法将会被执行,这么作的目的时释放被 bean 持有的资源,或者去执行一些终极任务. 当 ApplicationContext 调用 registerShutdownHook 方法时,这些销毁方法就会被触发,但通常正常的业务中不多会用到这些方法框架
接下来具体的展现一下三种方法的使用方式工具
Spring 为咱们提供了 DisposableBean 接口学习
咱们能够经过实现 DisposableBean
接口,在其惟一方法 destroy
内完成 bean 销毁的工做,可是 Spring Framework 官方并不建议咱们经过这种方法来销毁 bean,这一样是一种强耦合的方式,咱们看到框架层面才会用到这个方法。线程
这种方式是 Spring 很是提倡的一种方式,咱们一般将其标记在方法上便可,一般习惯将这个方法起名为 destory()
设计
一样是两种方式,第一种方式:3d
第二种方式
以上三种 Bean 的销毁方式也是能够组合使用的,那么组合在一块儿的调用顺序是什么呢?
用图示来讲明一下调用顺序
这个调用顺序也不难记忆
PreDestroy
(P)
,destroy(D)
,destroy-method(D)
--->PDD (那个3亿人都在 pin 的那个 APP 名称,目前 3 亿人中没有我)
再来看看 Spring Bean 生命周期图,咱们已经点亮了核心部分:
咱们要注意,在销毁的过程并无相似 BeanPostProcess 那中切面的思想,这里要注意到区别。
欢迎持续关注公众号:「日拱一兵」
- 前沿 Java 技术干货分享
- 高效工具汇总
- 面试问题分析与解答
- 技术资料领取
后续会出一系列文章点亮上图,同时进行 Spring 知识点解释与串联,在工做中充分利用 Spring 的特性
另外,还会推出 Java 多线程与 ElasticSearch 相关内容
持续关注,带你像读侦探小说同样轻松趣味学习 Java 技术栈相关知识