Spring Boot 2のコンテナ設定

1概要

このクイックチュートリアルでは、Spring Boot 2で EmbeddedServletContainerCustomizer ConfigurableEmbeddedServletContainer を置き換える方法について説明します。

これらのクラスは以前のバージョンのSpring Bootの一部でしたが、Spring Boot 2以降は削除されています。もちろん、機能はインタフェース WebServerFactoryCustomizer およびクラス __ ConfigurableServletWebServerFactory . __を通じて引き続き利用できます。

使い方を見てみましょう。

2 Spring Boot 2の前に

まず、古いクラスとインターフェースを使用しており、置き換えが必要な設定を見てみましょう。

@Component
public class CustomContainer implements EmbeddedServletContainerCustomizer {

    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {
        container.setPort(8080);
        container.setContextPath("");
     }
}

ここでは、サーブレットコンテナのポートとコンテキストパスをカスタマイズしています。

これを達成するためのもう1つの可能性は、Tomcatなどのコンテナタイプに対して ConfigurableEmbeddedServletContainer、 のより具体的なサブクラスを使用することです。

@Component
public class CustomContainer implements EmbeddedServletContainerCustomizer {

    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {
        if (container instanceof TomcatEmbeddedServletContainerFactory) {
            TomcatEmbeddedServletContainerFactory tomcatContainer =
              (TomcatEmbeddedServletContainerFactory) container;
            tomcatContainer.setPort(8080);
            tomcatContainer.setContextPath("");
        }
    }
}

3 Spring Boot 2 にアップグレードする

Spring Boot 2では、** EmbeddedServletContainerCustomizer インタフェースは WebServerFactoryCustomizer に置き換えられ、 ConfigurableEmbeddedServletContainer クラスは ConfigurableServletWebServerFactory . に置き換えられました。

Spring Boot 2プロジェクトの前の例を書き換えてみましょう。

public class CustomContainer implements
  WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {

    public void customize(ConfigurableServletWebServerFactory factory) {
        factory.setPort(8080);
        factory.setContextPath("");
     }
}

そして2番目の例では__TomcatServletWebServerFactoryを使用します。

@Component
public class CustomContainer implements
  WebServerFactoryCustomizer<TomcatServletWebServerFactory> {

    @Override
    public void customize(TomcatServletWebServerFactory factory) {
        factory.setContextPath("");
        factory.setPort(8080);
    }
}

同様に、削除された JettyEmbeddedServletContainerFactory および UndertowEmbeddedServletContainerFactory. に相当するものとして、 JettyServletWebServerFactory および UndertowServletWebServerFactory があります。

4.まとめ

この短い記事では、Spring Bootアプリケーションをバージョン2.xにアップグレードするときに発生する可能性がある問題を解決する方法を説明しました。

Spring Boot 2プロジェクトの例は、https://github.com/eugenp/tutorials/tree/master/spring-boot[GitHub repository]にあります。

前の投稿:Javaで16進数をASCIIに変換
次の投稿:Javaを使用したAmazon S3でのマルチパートアップロード