23.9. 应用退出

为确保ApplicationContext在退出时被平静的(gracefully)关闭,每个SpringApplication都会注册一个JVM的shutdown钩子,所有标准的Spring生命周期回调(比如DisposableBean接口或@PreDestroy注解)都能使用。

此外,如果想在SpringApplication.exit()被调用时返回特定的退出码(exit code),这些beans可以实现org.springframework.boot.ExitCodeGenerator接口。这个退出码之后会被传递到System.exit(),作为状态码返回。

@SpringBootApplication
public class ExitCodeApplication {

    @Bean
    public ExitCodeGenerator exitCodeGenerator() {
        return () -> 42;
    }

    public static void main(String[] args) {
        System.exit(SpringApplication
                .exit(SpringApplication.run(ExitCodeApplication.class, args)));
    }

}

ExitCodeGenerator接口也可以被异常实现。当遇到这样的一个异常,Spring Boot将返回由被实现了的getExitCode()方法提供的退出码。

最后更新于