当前位置: 首页 > news >正文

5、Spring之Bean生命周期源码解析(销毁)

Bean的销毁过程

Bean销毁是发送在Spring容器关闭过程中的。

在Spring容器关闭时,比如:

AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
UserService userService = (UserService) context.getBean("userService");
userService.test();// 容器关闭
context.close();

在Bean创建过程中,在最后(初始化之后),有一个步骤会去判断当前创建的Bean是不是DisposableBean:

  1. 当前Bean是否实现了DisposableBean接口
  2. 或者,当前Bean是否实现了AutoCloseable接口
  3. BeanDefinition中是否指定了destroyMethod
  4. 调用DestructionAwareBeanPostProcessor.requiresDestruction(bean)进行判断 (ApplicationListenerDetector中直接使得ApplicationListener是DisposableBean;InitDestroyAnnotationBeanPostProcessor中使得拥有@PreDestroy注解了的方法就是DisposableBean;)
  5. 把符合上述任意一个条件的Bean适配成DisposableBeanAdapter对象,并存入disposableBeans中(一个LinkedHashMap)

http://www.lryc.cn/news/151128.html

相关文章:

  • 开发多点触控MFC应用程序
  • 使用nlohmann json库进行序列化与反序列化
  • 高教社杯数模竞赛特辑论文篇-2012年A题:葡萄酒的评价(附获奖论文)
  • 手写RPC——数据序列化工具protobuf
  • 【MATLAB第70期】基于MATLAB的LightGbm(LGBM)梯度增强决策树多输入单输出回归预测及多分类预测模型(全网首发)
  • Linux进程间通信的几种方式
  • Android 13.0 Launcher3定制之双层改单层(去掉抽屉式一)
  • 【uniapp 配置启动页面隐私弹窗】
  • 2分钟讲清楚C#的委托, C语言的函数指针,Java的函数式接口
  • 华为云物联网平台微信小程序开发教程2.0【完整详细教程】
  • Laravel 模型1对1关联 1对多关联 多对多关联 ⑩①
  • 【分类】分类性能评价
  • M1 Pro 新芯片安装python2 方案汇总
  • 无涯教程-Android - Broadcast Receivers
  • 【Pytorch】Tutorials个人翻译集合
  • WordPress(6)网站侧边栏倒计时进度小工具
  • uniapp小程序单页面改变手机电量,头部通知的颜色效果demo(整理)
  • 数据挖掘导论学习笔记1(第1 、2章)
  • 从零开始,探索C语言中的字符串
  • Ubuntu学习---跟着绍发学linux课程记录(第二部分)
  • React18 新特性
  • HarmonyOS Codelab 优秀样例——购物应用,体验一次开发多端部署魅力
  • 音频基本知识
  • 小程序中如何给会员卡设置到期时间
  • Cookie与Session的区别及如何选择
  • 【快手小玩法-弹幕游戏】开发者功能测试报告提交模板
  • 微信小程序在线阅读系统微信小程序设计与实现
  • 【OpenCV入门】第七部分——图像的几何变换
  • 淘宝app商品详情原数据接口API(支持高并发请求/免费测试)
  • JS中的new操作符