我在 IntelliJ 中编写了一个 Spring Boot + Spring Batch 应用程序,如果遇到任何配置问题,它会在启动时失败,这是预期的。但是在IntelliJ中显示的应用程序的退出代码仍然是0。0错误代码不意味着成功吗?我应该怎么做才能让应用程序返回正确的退出代码?
最佳答案
这做起来非常尴尬! SpringApplication.run()
有一个非常奇怪的启动过程,它涉及生成一个新线程来完成工作和 yada yada。在执行此操作的过程中,它会调用 SilentExitExceptionHandler.setup(thread)
,这具有确保任何退出代码始终为 0 的副作用!
如果您想解决这个问题,您可以展开未捕获的异常处理程序。
你也可以这样做:
try {
SpringApplication.run(...);
}
catch(RuntimeException ex) {
throw new RuntimeException(ex);
}
通过包装异常,spring 不会将其识别为特殊异常,因此将以错误代码 1 退出。然而,它有副作用 - 特别是它会将异常记录到 stderr,但它也会忽略任何ExitCodeGenerator
您已设置的 bean。
关于Spring Boot 应用程序失败,退出代码为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48492784/