Spring Boot的exit code
文章目录
- Spring Boot的exit code
- 自定义Exit Codes
- ExitCodeGenerator
- ExitCodeExceptionMapper
- ExitCodeEvent
Spring Boot的exit code
任何应用程序都有exit code,这个code是int值包含负值,在本文中我们将会探讨Spring Boot中的 exit code。
Spring Boot的exit code
Spring Boot如果启动遇到错误,则会返回1.正常退出的话则会返回0.
Spring Boot向JVM注册了shutdown hooks来保证应用程序优雅的退出。Spring Boot还提供了org.springframework.boot.ExitCodeGenerator接口,来方便自定义退出code.
自定义Exit Codes
Spring Boot提供了三种方式来让我们自定义exit code。
ExitCodeGenerator,ExitCodeExceptionMapper和ExitCodeEvent。下面我们分别来讲解。
ExitCodeGenerator
实现ExitCodeGenerator接口,我们需要自己实现getExitCode()方法来自定义返回代码:
@SpringBootApplication
public class ExitCodeApp implements ExitCodeGenerator {public static void main(String[] args) {System.exit(SpringApplication.exit(SpringApplication.run(ExitCodeApp.class, args)));}@Overridepublic int getExitCode() {return 11;}
}
这里我们调用了System.exit方法来返回特定的代码。
ExitCodeExceptionMapper
如果我们遇到runtime exception的时候,可以使用ExitCodeExceptionMapper来做错误代码的映射如下:
@BeanCommandLineRunner createException() {return args -> Integer.parseInt("test") ;}@BeanExitCodeExceptionMapper exitCodeToExceptionMapper() {return exception -> {// set exit code base on the exception typeif (exception.getCause() instanceof NumberFormatException) {return 80;}return 1;};}
上面的例子我们创建了一个CommandLineRunner bean,在实例化的过程中会抛出NumberFormatException,然后在ExitCodeExceptionMapper中,我们会捕捉到这个异常,返回特定的返回值。
ExitCodeEvent
我们还可以使用ExitCodeEvent来捕捉异常事件如下所示:
@Bean
DemoListener demoListenerBean() {return new DemoListener();
}private static class DemoListener {@EventListenerpublic void exitEvent(ExitCodeEvent event) {System.out.println("Exit code: " + event.getExitCode());}
}
当应用程序退出的时候,exitEvent() 方法会被调用。
本文的例子可以参考:https://github.com/ddean2009/learn-springboot2/tree/master/springboot-exitcode
更多精彩内容且看:
- 区块链从入门到放弃系列教程-涵盖密码学,超级账本,以太坊,Libra,比特币等持续更新
- Spring Boot 2.X系列教程:七天从无到有掌握Spring Boot-持续更新
- Spring 5.X系列教程:满足你对Spring5的一切想象-持续更新
- java程序员从小工到专家成神之路(2020版)-持续更新中,附详细文章教程
更多教程请参考 flydean的博客
Spring Boot的exit code相关推荐
- Spring Boot 2.X系列教程:七天从无到有掌握Spring Boot-持续更新
文章目录 简介 Spring Boot的基本操作 Spring Boot的构建和部署 Spring Boot工具 Spring Boot的测试 Spring Boot中使用JPA Spring Boo ...
- spring boot学习(5): 进程exit code自定义
在线上环境中,应用可能因为一些异常而终止,我们如果需要及时找到原因,根据 exit code 来定位,是个很好的途径. spring boot 为开发者提供了相关的接口,方便开发者通过异常类型来定义自 ...
- spring boot 运行提示:Process finished with exit code 1
spring boot 运行提示:Process finished with exit code 1 经检查发现是由于在application.properties配置文件中将某些自定义配置项移除了, ...
- VS Code 2022路线图:大量Spring Boot优化提上日程!难道是被JB Code吓到了?
前沿技术早知道,弯道超车有希望 积累超车资本,从关注DD开始 1月20日,一名微软开发者发布了一篇标题为<Java on Visual Studio Code Update>的文章. 文中 ...
- Spring Tool Suite(STS)启动时出现错误:Java was started but returned exit code=13问题解决
Spring Tool Suite(STS)启动时出现错误:Java was started but returned exit code=13问题解决 参考文章: (1)Spring Tool Su ...
- VS Code 2022路线图:大量Spring Boot优化提上日程
1月20日,一名微软开发者发布了一篇标题为<Java on Visual Studio Code Update>的文章. 文中介绍了VS Code 2021年的亮点,同时还透露了VS Co ...
- 开启你的Spring Boot之旅 | VS Code | Maven | Spring
开启你的Spring Boot之旅 | VS Code | Maven | Spring 如果你像我一样,受够了 Eclipse 那令人眼花的白,那你来对地方了!如果你是个学习Java或Spring的 ...
- 使用 spring boot 开发通用程序
2019独角兽企业重金招聘Python工程师标准>>> tag: spring 学习笔记 date: 2018-03 spring 是什么?spring 核心是应用组件容器,管理组件 ...
- Spring Boot 2.0 常见问题总结(一)
SpringBoot2.x 依赖环境和版本新特性说明 依赖版本 jdk8 以上, Springboot2.x 用 JDK8 , 因为底层是 Spring framework5 . jar 包方式运行 ...
最新文章
- 服务器连接超时不响应怎么回事,勇者斗恶龙x服务器没有响应连接超时解决方法...
- 【最新刷榜】层次化视觉Transformer来啦!性能大幅优于DeiT、ViT和EfficientNet
- 关于jsp中 对只转发结果集的无效操作: last 异常
- linux 全双工 wifi热点,Linux中的同时套接字读/写(“全双工”)(特别是aio)
- Android 中opengl es灯光效果实例
- (day 23 - 中位数 投票法 )剑指 Offer 39. 数组中出现次数超过一半的数字
- 汇编 内存段划分和寄存器
- Keil5二步解决中文乱码,注释乱码问题
- Frank-wolfe算法多OD对matlab实现
- NEXMO 发送国际短信,遇到的问题
- Roaring Bitmaps结构原理
- 教育资源平台空间装扮html代码,一看就会—— 河南省基础教育资源公共服务平台“人人通空间”...
- shader graph_Shader Graph中的自定义照明:在2019年扩展图形
- 【他来了】云顶之奕 手游账号注册!国服可玩!
- 安装CocoaPods出现错误解决方法
- linux下实现root用户和其他用户之间转换
- Apache运行正常,但是localhost却打不开页面
- 直连的不同网段的两台主机如何通信
- 发票核验API 分享推荐
- 有一个属于自己的网站是不是很酷呢,超详细的建站流程,我都给你总结好了
热门文章
- ssh、私钥、密钥理解
- linux php在线运行环境,Linux安装php运行环境
- NEFU705(数论+DP)
- C++虚继承(三) --- C++ 对象的内存布局(下)(陈皓)
- Win32多线程编程(6) — 多线程协作及线程的池化管理
- 自媒体时代的贤内助——AI 视频云
- Python合并两个有序列表
- 睡前必读 | 如何系统性地学习分布式系统?
- OS- -文件系统(一)
- 关于GiF动图你不知道的9件事