springboot 如何在退出应用时执行的操作

Spring Boot应用关闭分析 本文挖掘了Spring Boot的关闭方式,并列举了关闭方式,从原理、源码的角度阐述了Spring Boot的关闭代码及扩展点。同时,额外说明了一些系统特性 和原理,比如,程序退出码和信号机制。 阅读详情

        每个SpringApplication都会向JVM注册一个关闭钩子(hook),以确保ApplicationContext在退出时正常关闭。 可以使用所有标准的Spring生命周期回调(例如DisposableBean接口或@PreDestroy注解)。

        此外,如果bean希望在调用SpringApplication.exit()时返回特定的退出代码,则bean可以实现org.springframework.boot.ExitCodeGenerator接口。 然后可以将此退出代码传递给System.exit()以将其作为状态代码返回,如以下示例所示:

@SpringBootApplication
public class ExitCodeApplication {

	@Bean
	public ExitCodeGenerator exitCodeGenerator() {
		return () -> 42;
	}

	public static void main(String[] args) {
		System.exit(SpringApplication
				.exit(SpringApplication.run(ExitCodeApplication.class, args)));
	}

}

        此外,ExitCodeGenerator接口可以通过异常实现。 遇到这样的异常时,Spring Boot返回实现的getExitCode()方法提供的退出代码。

面试官:Spring Boot 停止服务的方法有哪些? 第三种方法,在springboot启动的时候将进程号写入一个app.pid文件,生成的路径是可以指定的,可以通过命令 cat /Users/huangqingshi/app.id | xargs kill 命令直接停止服务,这个时候bean对象的PreDestroy方法也会调用的。在使用Springboot的时候,都要涉及到服务的停止和启动,当我们停止服务的时候,很多时候大家都是kill -9 直接把程序进程杀掉,这样程序不会执行优雅的关闭。这样程序在关闭的时候也会调用PreDestroy注解。 阅读详情

相关推荐

SpringBoot-CAS单点退出

cas-server默认配置的单点退出并没有做到真正的单点退出(在一个客户端退出时,另一个已经登录的客户端还能访问)。由于我的项目是springboot,所以就介绍在springboot下怎么设置单点退出。    与spring设置单点退出相类似,cas官网已经内置了此类功能,我们只需要加入一个拦截器与监听器就好。由于刚接触springboot,配置拦截器与监听器用了不少时间。而且在此期间发现Fi...

runrunrun0110的博客 3119

SpringApplication:应用程序退出

SpringApplication:应用程序退出

听海边涛声 1055

手把手教你用nRF52832+RFX2401C设计远距离蓝牙模块(附完整原理图/PCB文件)

本文详细介绍了如何利用nRF52832 SoC与RFX2401C射频前端芯片设计远距离蓝牙模块,涵盖芯片选型、阻抗匹配、PCB布局等关键环节。通过实战指南和完整原理图/PCB文件,帮助工程师实现输出功率可达20dBm的蓝牙模块设计,适用于智能家居、运动追踪等物联网应用。

weixin_29214199的博客 287

SpringBoot 优雅停止服务的几种方法

编写一个sh脚本,通过grep查找到我们项目的pid,然后先使用kill-15pid,然后sleep一下,然后在超找pid,如果没找到,说明已经关闭了,如果找到了,说明关闭失败了,那么就使用kill-9pid强制关闭进程了。SpringBoot提供的actuator的功能,它可以执行shutdown,health,info等,默认情况下,actuator的shutdown是disable的,我们需要打开它。利用actuator也是停止服务的方式,在下面会使用到,这里先把依赖添加进来。......

Park33的博客 5870

深入瑞芯微ISP生态:手把手配置RK3588上的RKAIQ Server并与Windows端RKISP Tuner联调

本文详细介绍了如何在RK3588平台上配置RKAIQ Server并与Windows端的RKISP Tuner进行联调,以实现高效的ISP调优。从环境准备、服务部署到实战调试,涵盖了IMX415相机适配等关键步骤,帮助开发者快速掌握瑞芯微ISP生态的核心技术。

weixin_32447969的博客 668

基于强化学习方法的PID参数整定

前言 PID控制器在工业界应用非常广泛,但是PID的参数调节一般需要人工根据经验法来试。对于有经验的工程师来说,一般试几次就可以获得满足调节的参数。然而对于新手工程师却很难确定一套比较好的参数。 这里我们采用强化学习的方法来调节PID参数。 这个例子展示了如何使用双延迟深度确定性策略梯度(TD3:twin-delayed deep deterministic policy gradient)强化学习算法来调整PI控制器。整定控制器的性能与使用Control System Tuner app整定的控制器的性能

weixin_42188287的博客 2万+

SpringBoot--退出时执行

其他网址 Springboot应用启动以及关闭时完成某些操作_qq_33281710的博客-优快云博客_springboot 退出时做点东西springboot启动和关闭时的事件操作:_每当我仰望星空的时候-优快云博客_springboot shutdown事件SpringBoot之退出服务(exit)时调用自定义的销毁方法_努力改变人生!-优快云博客_. ...

IT利刃出鞘的博客 4580

基于Simulink的输入-输出线性化精确转矩控制

本文详细介绍了基于Simulink的永磁同步电机(PMSM)输入-输出线性化(IOL)精确转矩控制方法。针对传统解耦控制在非线性转矩特性下的局限性,通过建立PMSM非线性状态空间模型,设计IOL控制器将系统转化为线性输入-输出映射。文章包含系统原理推导、Simulink建模步骤、参数整定方法和仿真结果分析,验证了IOL在高动态、宽速域工况下的优越性能(转矩误差降低90%)。最后提出了工程实现要点和扩展应用方向,为开发高精度电机驱动系统提供了实用指导。

xiaoheshang_123的博客 304

SpringBoot之退出服务时调用自定义的销毁方法

我们在工作中有时候可能会遇到这样场景,需要在退出容器的时候执行某些操作。SpringBoot中有两种方法可以供我们来选择(其实就是spring中我们常用的方式。只是destory-method是在XML中配置的,SpringBoot是去配置化。所以这里就不提这种方式了),一种是实现DisposableBean接口,一种是使用@PreDestroy注解。OK,下面我写两个例子看一下: DisposableBean接口 我们可以通过实现这个接口来在容器退出的时候执行某些操作。例子如下: pack.

杜海的博客 2499

基于MUSIC算法的DOA估计Matlab仿真

特别需要指出的是:通道与阵元并不是一一对应,通道是由空间的一个、几个或所有阵元合成的,当然空间某个特定的阵元可包含在不同的通道内。空间谱估计侧重于研究空间多传感器阵列所构成的处理系统对感兴趣的空间信号的多种参数进行准确估计的能力,其主要目的是估计信号的空域参数或信源位置,这也是雷达、通信、声纳等许多领域的重要任务之一。从系统框图中可以清晰的看出,估计空间相当于是对目标空间的一个重构过程,这个重构的精度由众多因素决定,如环境的复杂性、空间阵元的互耦、通道不一致、频带不一致等。

FPGA/MATLAB学习教程/源码/项目合作开发 1747

【虚幻引擎UE】UE5 阴影异常与优化

【虚幻引擎UE】UE5 阴影异常与优化解决方案合集

灵境引路人 3万+

SpringBoo在项目停止(服务停止/关闭退出)之后执行的方法

SpringBoo在退出时执行方法

qq_27480007的博客 829

【YOLO11改进 - C3k2融合】C3k2融合DWRSeg二次创新C3k2_DWR:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目标检测

【YOLO11改进 - C3k2融合】C3k2DWRSeg二次创新C3k2_DWR:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目标检测

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 1054

【框架】Spring Boot: 实现优雅退出

2018.11.18 文章目录前言方法方法一:Actuator的Endpoint机制[^1]方法二:使用`ApplicationContext#close()`方法方法三:`@PreDestroy` + `kill ` 前言 要求某个基于Spring Boot的调度器,能实现优雅退出,使得退出时正在运行时的作业能进行必要的回滚操作。为此,翻译某技术博客的总结1。 方法 每个Spring应用都会...

GHD 8887

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

java程序优雅退出

java 程序优雅退出

weixin_44385505的博客 300

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

springboot优雅停机

springboot优雅停机

liudong200618的博客 628

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

springboot启动时同时启动多个jar

java同时启动多个jar

Meeting_best_self的博客 2074

Springboot项目启动失败

错误提示信息: Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userTransactionService' defined in class path

weixin_45542303的博客 769

在SpringBoot中,怎么在应用程序启动或退出时执行初始化或者清理工作?

在SpringBoot中,怎么在程序启动或退出时执行初始化或者清理工作? 有的时候我们需要在应用程序启动的时候执行一些资源初始化的工作,或者在应用程序退出的时候进行一些资源释放的工作,那么该如何做呢?这篇文章针对两个问题做一个汇总说明。 怎么在应用程序启动时执行一些初始化工作? 我们在开发中可能会有这样的情景。需要在容器启动的时候执行一些内容。比如读取配置文件,数据库连接之类的。SpringBoo...

马靖的个人技术博客 3838

SpringBoot 程序启动或退出时执行

SpringBoot 程序启动或退出时执行操作启动时结束时 启动时 实现CommandLineRunner接口 import org.springframework.boot.CommandLineRunner; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; @Component @Order(1) public class CommandLineRu

花满天下的博客 2469

SpringBoot应用优雅的退出

这里我们需要分两种情况,一种是,如果SpringBoot的版本比较新(2.3及以上),则会比较简单,SpringBoot已经支持了Gracefulshutdown的能力。

luckyye的专栏 767

SpringBoot优雅退出

背景 我看了一些介绍SpringBoot源码的文章,里面都是从SpringApplication这个外部调用入口开始,重点介绍里面的listener监听器。今天我想想说说SpringBoot的优雅退出机制。 调用入口调用SpringApplication开始启动SpringBoot @SpringBootApplication publicclassApplication...

xiexiaojing的博客 1万+
上一篇: Springboot 应用程序启动后执行的操作
下一篇: springboot *.properties 文件生成随机数
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值