もともとSpringBootでWebアプリとして実装していたものに、一部Serviceクラスやモデルクラスを流用したバッチ処理を加えたい時、バッチ用のMainクラスを以下のように作成しても、内蔵のWebコンテナが起動してしまいます。
public static void main(String[] args) throws Exception {
SpringApplication.run(BatchMain.class, args);
}
これは、SpringApplicationクラスの初期化コードに、クラスパス上にjavax.servlet.Servletもしくはorg.springframework.web.context.ConfigurableWebApplicationContextがあるかどうかを確認して、webEnvironmentというboolean変数にtrueを入れてしまうからです(このフラグがtrueだと、Webコンテナが動く)
このため、初期化後にフラグをfalseにすることで、Webコンテナが動作しないようにできます。
public static void main(String[] args) throws Exception {
SpringApplication application = new SpringApplication(BatchMain.class);
application.setWebEnvironment(false);
application.run(args);
}