← 每日面试题 学习看板

Spring中shutdownhook作用是什么?

面试题/00java/04 框架/01Spring/08扩展与最佳实践/Spring中shutdownhook作用是什么?.md

面试记录 2026-10-11

题目:Spring中shutdownhook作用是什么?

难度:low

标签:spring/practice, difficulty/low

评分:⭐⭐⭐☆☆(3/5)

我的回答

这个东西具体我没用过,但是从它名字字面理解,应该是在停机时进行的后续处理。在停机的前处理哪些事情,应该是和优雅停机相关的,可以在其中释放资源,做通知、告警之类的操作。

点评

优点:

不足:

补充:

完整讲解

第一部分:知识重点剖析

核心考点定位:考察 JVM 和 Spring 容器关闭时的生命周期管理,理解 shutdownhook 的用途和实现方式。

知识点拆解:

  1. JVM shutdownhook:
  1. Spring shutdownhook:
  1. Spring Boot 优雅停机:
  1. 关闭顺序:

第二部分:考察方向与延伸递进

考察方向:

延伸递进面试题:

  1. JVM shutdownhook 和 Spring 的 @PreDestroy 有什么区别?
  1. Spring Boot 优雅停机怎么配置?工作原理是什么?
  1. shutdownhook 执行超时了怎么办?

第三部分:面试者参考回答(三步法口语化,300-400 字)

【一句话结论】

面试官您好,shutdownhook 是 JVM 或 Spring 容器关闭时的回调机制,用于释放资源、清理数据。

【三点展开】

第一,JVM shutdownhook 通过 Runtime.getRuntime().addShutdownHook() 注册,JVM 关闭时执行,典型用途是释放资源、关闭连接。

第二,Spring shutdownhook 通过容器关闭时的生命周期回调实现,方式有实现 DisposableBean 接口、标注 @PreDestroy 注解、或配置自定义 shutdown 方法。Spring 容器关闭时会触发所有 Bean 的销毁回调。

第三,Spring Boot 2.3+ 支持优雅停机,配置 server.shutdown=graceful 开启,可以等待所有请求处理完成后再关闭,配合超时时间设置(如 30 秒)。

【一句边界】

当然,shutdownhook 只解决"资源清理"问题,如果资源释放耗时超过超时时间,会强制关闭,需要配合监控告警和合理的超时设置。