文章目录

  • 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相关推荐

  1. Spring Boot 2.X系列教程:七天从无到有掌握Spring Boot-持续更新

    文章目录 简介 Spring Boot的基本操作 Spring Boot的构建和部署 Spring Boot工具 Spring Boot的测试 Spring Boot中使用JPA Spring Boo ...

  2. spring boot学习(5): 进程exit code自定义

    在线上环境中,应用可能因为一些异常而终止,我们如果需要及时找到原因,根据 exit code 来定位,是个很好的途径. spring boot 为开发者提供了相关的接口,方便开发者通过异常类型来定义自 ...

  3. spring boot 运行提示:Process finished with exit code 1

    spring boot 运行提示:Process finished with exit code 1 经检查发现是由于在application.properties配置文件中将某些自定义配置项移除了, ...

  4. VS Code 2022路线图:大量Spring Boot优化提上日程!难道是被JB Code吓到了?

    前沿技术早知道,弯道超车有希望 积累超车资本,从关注DD开始 1月20日,一名微软开发者发布了一篇标题为<Java on Visual Studio Code Update>的文章. 文中 ...

  5. 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 ...

  6. VS Code 2022路线图:大量Spring Boot优化提上日程

    1月20日,一名微软开发者发布了一篇标题为<Java on Visual Studio Code Update>的文章. 文中介绍了VS Code 2021年的亮点,同时还透露了VS Co ...

  7. 开启你的Spring Boot之旅 | VS Code | Maven | Spring

    开启你的Spring Boot之旅 | VS Code | Maven | Spring 如果你像我一样,受够了 Eclipse 那令人眼花的白,那你来对地方了!如果你是个学习Java或Spring的 ...

  8. 使用 spring boot 开发通用程序

    2019独角兽企业重金招聘Python工程师标准>>> tag: spring 学习笔记 date: 2018-03 spring 是什么?spring 核心是应用组件容器,管理组件 ...

  9. Spring Boot 2.0 常见问题总结(一)

    SpringBoot2.x 依赖环境和版本新特性说明 依赖版本 jdk8 以上, Springboot2.x 用 JDK8 , 因为底层是 Spring framework5 . jar 包方式运行 ...

最新文章

  1. 服务器连接超时不响应怎么回事,勇者斗恶龙x服务器没有响应连接超时解决方法...
  2. 【最新刷榜】层次化视觉Transformer来啦!性能大幅优于DeiT、ViT和EfficientNet
  3. 关于jsp中 对只转发结果集的无效操作: last 异常
  4. linux 全双工 wifi热点,Linux中的同时套接字读/写(“全双工”)(特别是aio)
  5. Android 中opengl es灯光效果实例
  6. (day 23 - 中位数 投票法 )剑指 Offer 39. 数组中出现次数超过一半的数字
  7. 汇编 内存段划分和寄存器
  8. Keil5二步解决中文乱码,注释乱码问题
  9. Frank-wolfe算法多OD对matlab实现
  10. NEXMO 发送国际短信,遇到的问题
  11. Roaring Bitmaps结构原理
  12. 教育资源平台空间装扮html代码,一看就会—— 河南省基础教育资源公共服务平台“人人通空间”...
  13. shader graph_Shader Graph中的自定义照明:在2019年扩展图形
  14. 【他来了】云顶之奕 手游账号注册!国服可玩!
  15. 安装CocoaPods出现错误解决方法
  16. linux下实现root用户和其他用户之间转换
  17. Apache运行正常,但是localhost却打不开页面
  18. 直连的不同网段的两台主机如何通信
  19. 发票核验API 分享推荐
  20. 有一个属于自己的网站是不是很酷呢,超详细的建站流程,我都给你总结好了

热门文章

  1. ssh、私钥、密钥理解
  2. linux php在线运行环境,Linux安装php运行环境
  3. NEFU705(数论+DP)
  4. C++虚继承(三) --- C++ 对象的内存布局(下)(陈皓)
  5. Win32多线程编程(6) — 多线程协作及线程的池化管理
  6. 自媒体时代的贤内助——AI 视频云
  7. Python合并两个有序列表
  8. 睡前必读 | 如何系统性地学习分布式系统?
  9. OS- -文件系统(一)
  10. 关于GiF动图你不知道的9件事