23.9 Application exit

为了确保SpringApplication在退出时(on exit),ApplicationContext能够优雅地关闭(closed gracefully),SpringApplication会向JVM注册一个shutdown hook(钩子)。

何为优雅地关闭ApplicationContext呢?就是所有标准的Spring生命周期回调(比如DisposableBean接口或@PreDestroy注解)都能在SpringApplication on exit时候被执行到。

此外,如果想在应用结束时(SpringApplication.exit()被调用时候)返回特定的退出码(exit code),可以让bean实现org.springframework.boot.ExitCodeGenerator接口。 这个exit code之后还能传递给System.exit()作为status code

@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()方法提供的退出代码。

results matching ""

    No results matching ""