Spring销毁的几种实现

这篇具有很好参考价值的文章主要介绍了Spring销毁的几种实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Spring销毁的几种实现

有这3种方法,但是程序执行完成并没有打印出来。

Spring销毁的几种实现

一定要手动close.手动执行后会调用如下逻辑:

org.springframework.context.support.AbstractApplicationContext#doClose

org.springframework.context.support.AbstractApplicationContext#destroyBeans

org.springframework.beans.factory.support.DefaultSingletonBeanRegistry#destroySingletons

Spring销毁的几种实现

我们要注意这个disposableBeans的值从哪里来的?

doCreateBean结束后会注册一个销毁方法。

Spring销毁的几种实现

org.springframework.beans.factory.support.AbstractBeanFactory#registerDisposableBeanIfNecessary

Spring销毁的几种实现

看这个方法:

org.springframework.beans.factory.support.AbstractBeanFactory#requiresDestruction

Spring销毁的几种实现

org.springframework.beans.factory.support.DisposableBeanAdapter#hasDestroyMethod

Spring销毁的几种实现

如果该bean实现了DisposableBean或者实现AutoCloseable接口,如果都没有实现就判断该bean上是否写了销毁方法,如果没有的话使用默认的(inferred)方法,在判断bean是是否有close或者shutdown方法,如果有的话就返回该销毁方法。

Spring销毁的几种实现

或者自己注入一个DestructionAwareBeanPostProcessor,重写该方法,然后返回true即可

org.springframework.beans.factory.support.DisposableBeanAdapter#DisposableBeanAdapter(java.lang.Object, java.lang.String, org.springframework.beans.factory.support.RootBeanDefinition, java.util.List<org.springframework.beans.factory.config.BeanPostProcessor>, java.security.AccessControlContext)

真正的销毁方法处理逻辑:

org.springframework.beans.factory.support.DisposableBeanAdapter#destroy

1.

Spring销毁的几种实现

先执行@PreDestroy方法,也是通过InitDestroyAnnotationBeanPostProcessor该方法反射执行的。

2.执行DisposableBean方法

Spring销毁的几种实现

3.反射执行@Bean里面的方法

Spring销毁的几种实现

问题1:如果@Bean写了销毁的方法,但实际上没有该方法会发生什么?

如果找不到直接报错:

Spring销毁的几种实现

销毁方法可以带参数吗?如果可以的话,可以带多少个参数?以及参数类型

Spring销毁的几种实现

从代码可以看出:可以带参数,但只能带一个参数,而且参数类型只能是boolean,反射的时候默认给true。

注意这里的销毁方法有个适配器模式。DisposableBeanAdapter文章来源地址https://www.toymoban.com/news/detail-418321.html

到了这里,关于Spring销毁的几种实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在微信小程序部署AI模型的几种方法

    本文只是分享思路,不提供可完整运行的项目代码 以目标检测类模型为例,该类模型会输出 类别信息 , 置信度 , 包含检测框的4个坐标信息 但不是所有的onnx模型都能在微信小程序部署,有些算子不支持,这种情况需要点特殊操作。 微信小程序提供的接口相当于使用onnxr

    2024年04月27日
    浏览(46)
  • JS实现深拷贝的几种方法

    这是最简单的方法。 通过递归的方式深度遍历对象,将每个属性的值进行复制。需要处理被复制对象为值类型的情况以及属性值中包含对象的情况。需要注意的是,为了防止循环引用导致死循环,需要记录已经遍历过的对象。 Lodash Lodash 是一个一致性、模块化、高性能的 J

    2024年02月11日
    浏览(36)
  • Java分页查询的几种实现方法

    最近在做需求的过程中遇到几个需要分页查询的需求,我也对分页有了较深的了解。分页一般分为两种一种是直接在sql中分页,一种是在内存中分页。本文仅针对内存中分页做记录。 第一种    如果是一个查询接口,向接口中传入page,和size(page默认值1,size默认值10)即可

    2024年02月06日
    浏览(75)
  • CSS实现图片放大缩小的几种方法

    参考 常用使用img标签,制定width或者height的任意一个,图片会自动等比例缩小 但是不知道为什么我在uniapp小程序中这样写并没有等比缩小 使用CSS3新属性,transform的scale 大于1: 放大 小于1: 缩小 使用背景图设置图片 https://www.runoob.com/cssref/css3-pr-background.html

    2024年01月19日
    浏览(57)
  • css实现三角形的几种方法

    css实现三角形的方法:1、使用边框实现三角形,利用透明边框和实色边框的组合,可以创建不同方向和大小的三角形;2、使用伪元素实现三角形,通过使用伪元素来创建一个占据父元素一半大小的实心三角形;3、使用transform属性实现三角形,通过调整旋转角度可以创建不同

    2024年02月12日
    浏览(29)
  • JS 实现页面跳转的几种方法

    我总结了这五种方法: 第一种:使用JS跳转页面 (1)跳转带参 (2)跳转无参 第二种:返回上一次预览界面 HTML页面嵌套 第三种:button按钮添加事件跳转   第四种:在新窗口打开 第五种:通过meta设置跳转页面 这里还有一个页面传值 第一个页面 第二个页面

    2024年02月01日
    浏览(33)
  • Java实现单例模式的几种方法

    单例模式作为23中设计模式中最基础的设计模式,一般实现方式为 ①私有化构造方法 ②提供一个获取对象的静态方法 除此之外,实现单例模式的方法还有很多种,这篇文章主要介绍实现单例模式的几种方法。 目录 一、懒汉式单例 二、懒汉式单例优化(双重检测锁) 三、饿

    2024年02月12日
    浏览(30)
  • 移动端 H5 实现拍照功能的几种方法

    下面是实现移动端 H5 拍照功能的几种方法: 1、使用 input type=\\\"file\\\" :通过 HTML5 规范中的 input type=\\\"file\\\" 调用系统摄像头,并选择拍摄的照片。但这种方式可能会导致页面刷新。 实现移动端 H5 拍照功能的代码: 在 HTML 中创建一个 input type=\\\"file\\\":  2,在 JavaScript 中为该元素绑定

    2024年02月16日
    浏览(41)
  • C语言-单片机:STM32程序烧录的几种方法

    STM32微控制器提供了多种程序烧录(也称为编程或固件更新)方式,这些方法允许用户将编译后的程序代码(通常为HEX或BIN格式)下载到MCU的闪存中。以下是几种常见的STM32程序烧录方式: ST-LINK : ST-LINK/V2 : 这是最常用的官方开发工具之一,可以直接通过USB接口与PC连接。S

    2024年04月26日
    浏览(33)
  • 小程序对话框的几种实现方式

    在微信小程序中,有以下几种方式可以实现对话框(Dialog)的展示: 1. wx.showModal :wx.showModal 是微信小程序提供的一个API,用于显示模态对话框。模态对话框是一种阻塞式的对话框,需要用户进行交互后才能关闭。可以通过调用 wx.showModal 方法来显示对话框,并设置标题、内

    2024年02月10日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包