1. ホーム
  2. java

[解決済み] Spring Bootアプリケーションのプログラムによるシャットダウン

2022-06-30 05:06:56

質問

どうすれば プログラムによるシャットダウン a スプリングブート アプリケーション VM を終了させることなく ?

他の作品では、その反対は何ですか?

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

どのように解決するのですか?

を閉じる 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);
    }
}