leb*_*ski 5 spring exit-code spring-boot
我最近了解到关闭 Spring Boot 应用程序的正确方法是:
public class Application {
@Bean
public ExitCodeGenerator exitCodeGenerator() {
return new ExitCodeGenerator() {
@Override
public int getExitCode() {
return 0;
}
};
}
public static void main(String[] args) throws Exception {
System.exit(SpringApplication.exit(SpringApplication.run(Application.class, args)));
}
}
Run Code Online (Sandbox Code Playgroud)
这应该返回退出代码 0,或者我将其配置为在getExitCode()
方法中返回的任何内容。我的问题是 - 执行上述方法与执行以下方法有什么区别:
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
System.exit(0);
}
}
Run Code Online (Sandbox Code Playgroud)
两种方法似乎都以完全相同的方式关闭应用程序,至少在控制台中是这样。那么有什么区别呢?
如果您希望在调用 SpringApplication.exit() 时返回特定的退出代码,则可以使用 ExitCodeGenerator。然后可以将此退出代码传递给 System.exit() 以将其作为状态代码返回。
例如:
@SpringBootApplication
public class ExitCodeApplication {
@Bean
public ExitCodeGenerator exitCodeGenerator() {
return new ExitCodeGenerator() {
@Override
public int getExitCode() {
return 42;
}
};
}
public static void main(String[] args) {
System.exit(SpringApplication
.exit(SpringApplication.run(ExitCodeApplication.class, args)));
}
}
Run Code Online (Sandbox Code Playgroud)
此外,ExitCodeGenerator 接口可以通过异常来实现。当遇到此类异常时,Spring Boot 将返回已实现的 getExitCode() 方法提供的退出代码。
归档时间: |
|
查看次数: |
4678 次 |
最近记录: |