1. 概要
このチュートリアルでは、SpringBootServletInitializerの簡単な紹介を行います。
これはWebApplicationInitializerの拡張であり、はWebコンテナにデプロイされた従来のWARアーカイブからSpringApplicationを実行します。 このクラスは、 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アプリケーションを実行する方法を示しました。
この例の完全なソースコードは、GitHubでを介して入手できます。これはMavenベースのプロジェクトであるため、そのままインポートして使用できます。