SpringBootServletInitializerのクイックイントロ
1. 概要
このチュートリアルでは、SpringBootServletInitializerの簡単な紹介を行います。
これは、runs a SpringApplication from a traditional WAR archiveがWebコンテナにデプロイされたWebApplicationInitializerの拡張です。 このクラスは、Servlet、Filter、および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ベースのプロジェクトであるため、そのままインポートして使用できます。