如何在不终止VM的情况下以编程方式关闭Spring Boot应用程序?
在其他作品中,相反的是
new SpringApplication(Main.class).run(args);
关闭a SpringApplication基本上意味着关闭基础ApplicationContext。该SpringApplication#run(String...)方法为你提供了ApplicationContext一个ConfigurableApplicationContext。你可以close()自己动手做。
SpringApplication
ApplicationContext
SpringApplication#run(String...)
ConfigurableApplicationContext
例如,
@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...)帮助程序方法来帮助你。例如,
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); } }