SpringBootServletInitializerの簡単な紹介

SpringBootServletInitializerのクイックイントロ

1. 概要

このチュートリアルでは、SpringBootServletInitializerの簡単な紹介を行います。

これは、runs a SpringApplication from a traditional WAR archiveがWebコンテナにデプロイされたWebApplicationInitializerの拡張です。 このクラスは、ServletFilter、およびServletContextInitializerBeanをアプリケーションコンテキストからサーバーにバインドします。

SpringBootServletInitializerクラスを拡張すると、configure()メソッドをオーバーライドすることで、サーブレットコンテナによって実行されるときにアプリケーションを構成することもできます。

2. SpringBootServletInitializer

より実用的にするために、Initializerクラスを拡張するメインクラスの例を示します。

WarInitializerApplicationと呼ばれる@SpringBootApplicationクラスは、SpringBootServletInitializerを拡張し、configure()メソッドをオーバーライドします。 このメソッドは、SpringApplicationBuilderを使用して、クラスをアプリケーションの構成クラスとして登録するだけです。

@SpringBootApplication
public class WarInitializerApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(
      SpringApplicationBuilder builder) {
        return builder.sources(WarInitializerApplication.class);
    }

    public static void main(String[] args) {
        SpringApplication sa = new SpringApplication(
          WarInitializerApplication.class);
        sa.run(args);
    }

    @RestController
    public static class WarInitializerController {

        @GetMapping("/")
        public String handler() {
           // ...
        }
    }
}

これで、アプリケーションをWARとしてパッケージ化すると、従来の方法で任意のWebコンテナにデプロイできるようになります。これにより、configure()メソッドで追加したロジックも実行されます。

それをJARファイルとしてパッケージ化する場合は、同じロジックをmain()メソッドに追加して、埋め込みコンテナーもそれを取得できるようにする必要があります。

3. 結論

この記事では、SpringBootServletInitializerを紹介し、それを使用して従来のWARアーカイブからSpringBootアプリケーションを実行する方法を示しました。

この例の完全なソースコードは入手可能ですover on GitHub.これはMavenベースのプロジェクトであるため、そのままインポートして使用できます。