web-dev-qa-db-ja.com

外部Tomcatにデプロイするときに `SpringBootServletInitializer`を拡張する必要がある理由

SpringBootServletInitializerアプリケーションを外部のSpringBootに実行するために、なぜTomcatを拡張する必要があるのですか?

SpringBootServletInitializerを拡張せずに組み込みTomcatで実行する場合、外部のTomcatにデプロイするときにSpringBootServletInitializerを拡張する必要があるのはなぜですか?

11
Mehraj Malik

古いサーブレットコンテナは、サーブレット3.0で使用されるServletContextInitializerbootstrapプロセスをサポートしていません。引き続きSpringを使用できます。これらのコンテナでSpringBootを実行しますが、web.xmlをアプリケーションに追加し、ApplicationContextDispatcherServlet

デプロイ可能な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

10
ManojP

ここにいくつかのより多くの情報があります:

ServletベースのWebアプリケーション(Springなど)をデプロイするには、実際には従来のweb.xmlを提供する必要があります。

WebApplicationInitializer インターフェイスを使用して、プログラムで同じことを行うこともできます。ドキュメントによると

従来のweb.xmlベースのアプローチとは対照的に(または場合によっては組み合わせて)、ServletContextをプログラムで構成するためにサーブレット3.0以降の環境に実装されるインターフェース。

SpringBootが提案しているように、xml configurationではなくJavaConfigurationを使用します。

web.xmlの代わりにJavaConfigurationを使用します。

SpringBootServletInitializerクラスがあり、最終的にはWebApplicationInitializerインターフェースを実装し、そのonStartupをオーバーライドして構成します。

3
Mehraj Malik