qishi821的个人博客分享 http://blog.sciencenet.cn/u/qishi821

博文

[转载]Spring-series

已有 1066 次阅读 2023-6-27 10:56 |个人分类:Java|系统分类:科研笔记|文章来源:转载

最近在系统学习 Spring 相关的一些知识点,仅此作为学习心得笔记

在这里插入图片描述

从上面的结果,我们可以得出以下结论,在Spring框架中单实例Bean的初始化和销毁过程有这样的执行顺序:

初始化顺序:@PostConstruct → InitializingBean → init-method
销毁顺序:@PreDestroy → DisposableBean → destroy-method

在初始化Bean时,@PostConstruct注解方法会首先被执行,然后是实现InitializingBean接口的afterPropertiesSet方法,最后是init-method指定的方法。

在销毁Bean时,@PreDestroy注解方法会首先被执行,然后是实现DisposableBean接口的destroy方法,最后是destroy-method指定的方法

结合前面说过的属性赋值(构造器方法和setter方法),简单总结一下Spring Bean生命周期的流程:

  1. 实例化(通过构造器方法);

  2. 设置Bean的属性(通过setter方法);

  3. 调用Bean的初始化方法(@PostConstructafterPropertiesSet方法或者init-method指定的方法);

  4. Bean可以被应用程序使用;

  5. 当容器关闭时,调用Bean的销毁方法(@PreDestroydestroy方法或者destroy-method指定的方法)。


  6. 将原型Bean和单例Bean的三种生命周期进行对比后发现,调用IOC容器的destroyBean()方法销毁原型Bean时,只有@PreDestroy注解和DisposableBean接口的destroy方法会被触发,而被destroy-method标记的自定义销毁方法并不会被执行。

  7.   从这里我们可以得出结论:在销毁原型Bean时,Spring不会执行由destroy-method标记的自定义销毁方法,所以原型Beandestroy-method的也有局限性。如果有重要的清理逻辑需要在Bean销毁时执行,那么应该将这部分逻辑放在@PreDestroy注解的方法或DisposableBean接口的destroy方法中。

参考资料:https://developer.aliyun.com/article/1255264?spm=a2c6h.12873639.article-detail.39.2692393aVhK5ji&scm=20140722.ID_community@@article@@1255264._.ID_community@@article@@1255264-OR_rec-V_1-RL_community@@article@@1201855

如有侵权,请通知我,我会立即删除



https://blog.sciencenet.cn/blog-2355761-1393167.html

上一篇:写论文的思路(纯属个人见解)
收藏 IP: 106.39.25.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-22 21:44

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部