小编典典

以编程方式关闭Spring Boot应用程序

spring

如何在不终止VM的情况下以编程方式关闭Spring Boot应用程序?

在其他作品中,相反的是

new SpringApplication(Main.class).run(args);

阅读 909

收藏
2020-04-13

共1个答案

小编典典

关闭a SpringApplication基本上意味着关闭基础ApplicationContext。该SpringApplication#run(String...)方法为你提供了ApplicationContext一个ConfigurableApplicationContext。你可以close()自己动手做。

例如,

@SpringBootApplication
public class Example {
    public static void main(String[] args) {
        ConfigurableApplicationContext ctx = SpringApplication.run(Example.class, args);
        // ...determine it's time to shut down...
        ctx.close();
    }
}

另外,你可以使用static SpringApplication.exit(ApplicationContext, ExitCodeGenerator...)帮助程序方法来帮助你。例如,

@SpringBootApplication
public class Example {
    public static void main(String[] args) {
        ConfigurableApplicationContext ctx = SpringApplication.run(Example.class, args);
        // ...determine it's time to stop...
        int exitCode = SpringApplication.exit(ctx, new ExitCodeGenerator() {
            @Override
            public int getExitCode() {
                // no errors
                return 0;
            }
        });

        // or shortened to
        // int exitCode = SpringApplication.exit(ctx, () -> 0);

        System.exit(exitCode);
    }
}
2020-04-13