使用System.exit()來優(yōu)雅地終止SpringBoot項(xiàng)目的代碼示例
前言
System.exit():
System.exit():
System.exit() 方法是 Java 中用于退出程序的方法。它接受一個(gè)整數(shù)參數(shù),通常被用來指示程序的退出狀態(tài)。一般約定,如果程序正常退出,通常返回值為 0,而如果程序出現(xiàn)錯(cuò)誤或異常退出,返回值可以是其他非零值,用于指示錯(cuò)誤的類型或狀態(tài)。
需要注意的是,System.exit() 是一種強(qiáng)制退出程序的方式,它會(huì)立即終止程序的執(zhí)行,不會(huì)執(zhí)行任何未完成的代碼或清理操作。因此,在正常情況下,應(yīng)該盡量避免濫用這個(gè)方法,而是通過正常的控制流程來退出程序。
SpringApplication.exit():
SpringApplication.exit 是 Spring Boot 提供的方法,用于優(yōu)雅地終止 Spring Boot 應(yīng)用程序。它的作用是允許你觸發(fā)應(yīng)用程序的關(guān)閉操作,這將導(dǎo)致 Spring Boot 應(yīng)用程序執(zhí)行關(guān)閉鉤子(shutdown hooks)和銷毀生命周期中的 Bean 等清理工作,以確保應(yīng)用程序在退出之前可以完成一些清理工作、資源釋放或其他必要的操作。
應(yīng)用
在開發(fā)中,有可能存在以下場(chǎng)景:
- 啟動(dòng)項(xiàng)目時(shí)驗(yàn)證項(xiàng)目是否已經(jīng)授權(quán),如果沒有授權(quán)則停止啟動(dòng)。
- 啟動(dòng)項(xiàng)目后需要進(jìn)行各類初始。如果初始化失敗則停止啟動(dòng)。
為了實(shí)現(xiàn)停止SpringBoot項(xiàng)目運(yùn)行我們需要使用到System.exit()方法。System.exit()接受一個(gè)int參數(shù),如果為0正常退出;為非0的其他整數(shù),表示非正常退出當(dāng)前程序。其實(shí)不管傳什么數(shù)值都會(huì)導(dǎo)致系統(tǒng)的停止。
具體使用如下:
假如我們的初始化操作,如下所示:
@Component
public class SystemApplicationRunner implements ApplicationRunner {
@Resource
private WebApplicationContext applicationContext;
@Override
public void run(ApplicationArguments args) {
// 具體什么時(shí)候調(diào)用,根據(jù)實(shí)際情況定
if(xxx){
System.out.println("調(diào)用方法,關(guān)閉SpringBoot");
// 如果初始化失敗或者其他失敗情況,則調(diào)用System.exit()方法
System.exit(SpringApplication.exit(applicationContext));
}
}
}
效果:

補(bǔ)充:通過 System.exit(SpringApplication.exit(applicationContext));方式時(shí),系統(tǒng)會(huì)自動(dòng)判斷傳0還是非0,我們也可以自主傳入?yún)?shù),比如:
public class Test {
public static void main(String[] args) {
if(xxx){
System.out.println("調(diào)用方法,關(guān)閉項(xiàng)目");
// 如果初始化失敗或者其他失敗情況,則調(diào)用System.exit()方法
System.exit(0);
}
}
}
以上就是使用System.exit()來優(yōu)雅地終止SpringBoot項(xiàng)目的代碼示例的詳細(xì)內(nèi)容,更多關(guān)于System.exit()終止SpringBoot項(xiàng)目的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java實(shí)現(xiàn)的動(dòng)態(tài)數(shù)字時(shí)鐘功能示例【顯示世界時(shí)間】
這篇文章主要介紹了Java實(shí)現(xiàn)的動(dòng)態(tài)數(shù)字時(shí)鐘功能,結(jié)合實(shí)例形式分析了java顯示北京、紐約、倫敦等世界時(shí)間的相關(guān)日期時(shí)間運(yùn)算操作技巧,需要的朋友可以參考下2019-03-03
Spring 整合Shiro 并擴(kuò)展使用EL表達(dá)式的實(shí)例詳解
Shiro是一個(gè)輕量級(jí)的權(quán)限控制框架,應(yīng)用非常廣泛。本文的重點(diǎn)是介紹Spring整合Shiro,并通過擴(kuò)展使用Spring的EL表達(dá)式。需要的朋友可以參考下2018-03-03

