使用System.exit()來優(yōu)雅地終止SpringBoot項目的代碼示例
前言
System.exit():
System.exit():
System.exit() 方法是 Java 中用于退出程序的方法。它接受一個整數(shù)參數(shù),通常被用來指示程序的退出狀態(tài)。一般約定,如果程序正常退出,通常返回值為 0,而如果程序出現(xiàn)錯誤或異常退出,返回值可以是其他非零值,用于指示錯誤的類型或狀態(tài)。
需要注意的是,System.exit() 是一種強制退出程序的方式,它會立即終止程序的執(zhí)行,不會執(zhí)行任何未完成的代碼或清理操作。因此,在正常情況下,應該盡量避免濫用這個方法,而是通過正常的控制流程來退出程序。
SpringApplication.exit():
SpringApplication.exit 是 Spring Boot 提供的方法,用于優(yōu)雅地終止 Spring Boot 應用程序。它的作用是允許你觸發(fā)應用程序的關閉操作,這將導致 Spring Boot 應用程序執(zhí)行關閉鉤子(shutdown hooks)和銷毀生命周期中的 Bean 等清理工作,以確保應用程序在退出之前可以完成一些清理工作、資源釋放或其他必要的操作。
應用
在開發(fā)中,有可能存在以下場景:
- 啟動項目時驗證項目是否已經(jīng)授權,如果沒有授權則停止啟動。
- 啟動項目后需要進行各類初始。如果初始化失敗則停止啟動。
為了實現(xiàn)停止SpringBoot
項目運行我們需要使用到System.exit()
方法。System.exit()
接受一個int參數(shù),如果為0正常退出;為非0的其他整數(shù),表示非正常退出當前程序。其實不管傳什么數(shù)值都會導致系統(tǒng)的停止
。
具體使用如下:
假如我們的初始化操作,如下所示:
@Component public class SystemApplicationRunner implements ApplicationRunner { @Resource private WebApplicationContext applicationContext; @Override public void run(ApplicationArguments args) { // 具體什么時候調用,根據(jù)實際情況定 if(xxx){ System.out.println("調用方法,關閉SpringBoot"); // 如果初始化失敗或者其他失敗情況,則調用System.exit()方法 System.exit(SpringApplication.exit(applicationContext)); } } }
效果:
補充:通過 System.exit(SpringApplication.exit(applicationContext));
方式時,系統(tǒng)會自動判斷傳0還是非0,我們也可以自主傳入?yún)?shù),比如:
public class Test { public static void main(String[] args) { if(xxx){ System.out.println("調用方法,關閉項目"); // 如果初始化失敗或者其他失敗情況,則調用System.exit()方法 System.exit(0); } } }
以上就是使用System.exit()來優(yōu)雅地終止SpringBoot項目的代碼示例的詳細內容,更多關于System.exit()終止SpringBoot項目的資料請關注腳本之家其它相關文章!
相關文章
解析Java中PriorityQueue優(yōu)先級隊列結構的源碼及用法
優(yōu)先級隊列是一種隊列結構,是0個或多個元素的集合,每個元素都有一個優(yōu)先權,PriorityQueue被內置于JDK中,本文就來解析Java中PriorityQueue優(yōu)先級隊列結構的源碼及用法.2016-05-05解決在Idea 2020.2下使用 Lombok的注解不生效的問題(插件安裝了,依賴也寫了,自動注解也設置了)
這篇文章主要介紹了在Idea 2020.2下使用 Lombok的注解不生效的問題(插件安裝了,依賴也寫了,自動注解也設置了),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08解決idea創(chuàng)建版本時只有Java21和Java17選項
你是否在使用IntelliJ?IDEA創(chuàng)建新項目時遇到了只有Java?21和Java?17的選項?別擔心,我們的指南將為你提供解決方案,通過簡單的步驟,你將能夠選擇你需要的任何Java版本,繼續(xù)閱讀,讓我們開始吧!2024-03-03解決若依pageHelper在動態(tài)切換數(shù)據(jù)源問題
這篇文章主要介紹了解決pageHelper在動態(tài)切換數(shù)據(jù)源問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01@ConfigurationProperties綁定配置信息至Array、List、Map、Bean的實現(xiàn)
這篇文章主要介紹了@ConfigurationProperties綁定配置信息至Array、List、Map、Bean的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-05-05