23.9 Application Exit

每个SpringApplication在JVM中注册关闭钩用来确保退出时ApplicationContext优雅的关闭.Spring的所有标准生命周期回调(如DisposableBean接口或@PreDestroy注解)都可以使用.

此外,如果他们想在调用SpringApplication.exit()返回一个特定的退出码,实例可以考虑实现org.springframework.boot.ExitCodeGenerator接口. 这个退出代码随后传递给System.exit()以状态码的形式返回,如以下示例所示:

  1. @SpringBootApplication
  2. public class ExitCodeApplication {
  3. @Bean
  4. public ExitCodeGenerator exitCodeGenerator() {
  5. return () -> 42;
  6. }
  7. public static void main(String[] args) {
  8. System.exit(SpringApplication.exit(SpringApplication.run(ExitCodeApplication.class, args)));
  9. }
  10. }

此外,ExitCodeGenerator接口也可以由异常来实现.当遇到一个类似异常时,Spring Boot以实现的getExitCode()方法返回退出码.