Springboot CommandLineRunner非同期処理でプロセスが終了されない

バッチ処理をCommandLineRunnerを使用して非同期で行っていましたが、プロセスが終了されなかったので、解決方法をみていきたいと思います。

解決方法

@SpringBootApplication
public class BatchApplication {

  public static void main(String[] args) {
    SpringApplication.run(BatchApplication.class, args).close();
  }

}

mainメソッドのrun()の後ろにclose()メソッドを呼び出すことで正常終了されました。

// releasing all resources
ConfigurableApplicationContext.close();

// close application
System.exit(0);

上記のように強制的に終了させることもできましたが、Junitのテスト時にエラーになってしまいました。

参考

コメントを残す