SpringBootServletInitializer
アプリケーションを外部のSpringBoot
に実行するために、なぜTomcat
を拡張する必要があるのですか?
SpringBootServletInitializer
を拡張せずに組み込みTomcatで実行する場合、外部のTomcatにデプロイするときにSpringBootServletInitializer
を拡張する必要があるのはなぜですか?
古いサーブレットコンテナは、サーブレット3.0で使用されるServletContextInitializerbootstrapプロセスをサポートしていません。引き続きSpringを使用できます。これらのコンテナでSpringBootを実行しますが、web.xmlをアプリケーションに追加し、ApplicationContextをDispatcherServlet。
デプロイ可能なwarファイルを作成するには、SpringBootServletInitializerサブクラスを提供し、そのconfigureをオーバーライドします。 -) 方法。これは、SpringFrameworkのサーブレット3.0サポートを利用し、サーブレットコンテナによって起動されたときにアプリケーションを構成できるようにします。通常、アプリケーションのメインクラスを更新してSpringBootServletInitializerを拡張します。
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
以下のリンクを参照できます
https://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html
ここにいくつかのより多くの情報があります:
Servlet
ベースのWebアプリケーション(Spring
など)をデプロイするには、実際には従来のweb.xml
を提供する必要があります。
WebApplicationInitializer インターフェイスを使用して、プログラムで同じことを行うこともできます。ドキュメントによると
従来のweb.xmlベースのアプローチとは対照的に(または場合によっては組み合わせて)、ServletContextをプログラムで構成するためにサーブレット3.0以降の環境に実装されるインターフェース。
SpringBootが提案しているように、xml configuration
ではなくJavaConfiguration
を使用します。
web.xml
の代わりにJavaConfigurationを使用します。
SpringBootServletInitializer
クラスがあり、最終的にはWebApplicationInitializer
インターフェースを実装し、そのonStartup
をオーバーライドして構成します。