javascript
Spring Boot的exit code
文章目錄
- Spring Boot的exit code
- 自定義Exit Codes
- ExitCodeGenerator
- ExitCodeExceptionMapper
- ExitCodeEvent
Spring Boot的exit code
任何應(yīng)用程序都有exit code,這個(gè)code是int值包含負(fù)值,在本文中我們將會(huì)探討Spring Boot中的 exit code。
Spring Boot的exit code
Spring Boot如果啟動(dòng)遇到錯(cuò)誤,則會(huì)返回1.正常退出的話(huà)則會(huì)返回0.
Spring Boot向JVM注冊(cè)了shutdown hooks來(lái)保證應(yīng)用程序優(yōu)雅的退出。Spring Boot還提供了org.springframework.boot.ExitCodeGenerator接口,來(lái)方便自定義退出code.
自定義Exit Codes
Spring Boot提供了三種方式來(lái)讓我們自定義exit code。
ExitCodeGenerator,ExitCodeExceptionMapper和ExitCodeEvent。下面我們分別來(lái)講解。
ExitCodeGenerator
實(shí)現(xiàn)ExitCodeGenerator接口,我們需要自己實(shí)現(xiàn)getExitCode()方法來(lái)自定義返回代碼:
@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;} }這里我們調(diào)用了System.exit方法來(lái)返回特定的代碼。
ExitCodeExceptionMapper
如果我們遇到runtime exception的時(shí)候,可以使用ExitCodeExceptionMapper來(lái)做錯(cuò)誤代碼的映射如下:
@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;};}上面的例子我們創(chuàng)建了一個(gè)CommandLineRunner bean,在實(shí)例化的過(guò)程中會(huì)拋出NumberFormatException,然后在ExitCodeExceptionMapper中,我們會(huì)捕捉到這個(gè)異常,返回特定的返回值。
ExitCodeEvent
我們還可以使用ExitCodeEvent來(lái)捕捉異常事件如下所示:
@Bean DemoListener demoListenerBean() {return new DemoListener(); }private static class DemoListener {@EventListenerpublic void exitEvent(ExitCodeEvent event) {System.out.println("Exit code: " + event.getExitCode());} }當(dāng)應(yīng)用程序退出的時(shí)候,exitEvent() 方法會(huì)被調(diào)用。
本文的例子可以參考:https://github.com/ddean2009/learn-springboot2/tree/master/springboot-exitcode
更多精彩內(nèi)容且看:
- 區(qū)塊鏈從入門(mén)到放棄系列教程-涵蓋密碼學(xué),超級(jí)賬本,以太坊,Libra,比特幣等持續(xù)更新
- Spring Boot 2.X系列教程:七天從無(wú)到有掌握Spring Boot-持續(xù)更新
- Spring 5.X系列教程:滿(mǎn)足你對(duì)Spring5的一切想象-持續(xù)更新
- java程序員從小工到專(zhuān)家成神之路(2020版)-持續(xù)更新中,附詳細(xì)文章教程
更多教程請(qǐng)參考 flydean的博客
總結(jié)
以上是生活随笔為你收集整理的Spring Boot的exit code的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 在Spring Boot中加载初始化数据
- 下一篇: Shutdown SpringBoot