1. 概要

Spring Bootは、多くの構成プロパティに適切なデフォルトを提供します。 ただし、ケース固有の値を使用してこれらをカスタマイズする必要がある場合があります。

また、一般的な使用例は、組み込みサーバーのデフォルトポートを変更することです。

このクイックチュートリアルでは、これを実現するためのいくつかの方法について説明します。

2. プロパティファイルの使用

Spring Bootをカスタマイズする最も速くて簡単な方法は、デフォルトのプロパティの値をオーバーライドすることです。

サーバーポートの場合、変更するプロパティはserver.portです。

デフォルトでは、組み込みサーバーはポート8080で起動します。

では、application.propertiesファイルで別の値を提供する方法を見てみましょう

server.port=8081

これで、サーバーはポート8081で起動します。

また、 application.yml ファイルを使用している場合も、同じことができます。

server:
  port : 8081

Mavenアプリケーションのsrc/ main / resources ディレクトリに配置されている場合、両方のファイルはSpringBootによって自動的にロードされます。

2.1. 環境固有のポート

さまざまな環境にアプリケーションをデプロイしている場合は、各システムのさまざまなポートでアプリケーションを実行したい場合があります。

これは、プロパティファイルアプローチとSpringプロファイルを組み合わせることで簡単に実現できます。 具体的には、環境ごとにプロパティファイルを作成できます。

たとえば、次の内容のapplication-dev.propertiesファイルがあります。

server.port=8081

次に、別のポートを持つ別のapplication-qa.propertiesファイルを追加します。

server.port=8082

これで、ほとんどの場合、プロパティファイルの構成で十分です。 ただし、この目標には他にもオプションがあるので、それらも調べてみましょう。

3. プログラムによる構成

アプリケーションの起動時に特定のプロパティを設定するか、組み込みサーバーの構成をカスタマイズすることにより、プログラムでポートを構成できます。

まず、メインの@SpringBootApplicationクラスでプロパティを設定する方法を見てみましょう。

@SpringBootApplication
public class CustomApplication {
    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(CustomApplication.class);
        app.setDefaultProperties(Collections
          .singletonMap("server.port", "8083"));
        app.run(args);
    }
}

次に、サーバー構成をカスタマイズするには、WebServerFactoryCustomizerインターフェイスを実装する必要があります。

@Component
public class ServerPortCustomizer 
  implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> {
 
    @Override
    public void customize(ConfigurableWebServerFactory factory) {
        factory.setPort(8086);
    }
}

これはSpringBoot2.xバージョンに適用されることに注意してください。

Spring Boot 1.xの場合、同様にEmbeddedServletContainerCustomizerインターフェースを実装できます。

4. コマンドライン引数の使用

アプリケーションをjarとしてパッケージ化して実行する場合、server.port引数をjavaコマンドで設定できます。

java -jar spring-5.jar --server.port=8083

または同等の構文を使用して:

java -jar -Dserver.port=8083 spring-5.jar

5. 評価の順序

最後に、これらのアプローチがSpring Bootによって評価される順序を見てみましょう。

基本的に、構成の優先順位は

  • 組み込みサーバー構成
  • コマンドライン引数
  • プロパティファイル
  • メインの@SpringBootApplication構成

6. 結論

この記事では、SpringBootアプリケーションでサーバーポートを構成する方法について説明しました。

いつものように、例のソースコードはGitHubから入手できます。