我最近了解到关闭 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)));
}
}
这应该返回退出代码 0,或者我将其配置为在getExitCode()
方法。我的问题是 - 执行上述方法与执行以下方法有什么区别:
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
System.exit(0);
}
}
两种方法似乎都以完全相同的方式关闭应用程序,至少在控制台中是这样。那么有什么区别呢?
如果您希望在调用 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)));
}
}
此外,ExitCodeGenerator 接口可以通过异常来实现。当遇到此类异常时,Spring Boot 将返回已实现的 getExitCode() 方法提供的退出代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)