每个都SpringApplication向JVM注册一个关闭钩子,以确保ApplicationContext退出时正常关闭。可以使用所有标准的Spring生命周期回调(例如DisposableBean接口或@PreDestroy批注)。
    另外,org.springframework.boot.ExitCodeGenerator如果bean希望在SpringApplication.exit()调用时返回特定的退出代码,则可以实现该接口。然后可以将此退出代码传递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()方法提供的退出代码。