Spring Bootでデフォルトポートを変更する方法

Spring Bootでデフォルトポートを変更する方法

1. 前書き

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

一般的な使用例はchanging the default port for the embedded serverです。

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

参考文献:

SpringおよびSpring Bootのプロパティ

Springでプロパティファイルとプロパティ値を操作する方法のチュートリアル。

スプリングブート変更コンテキストパス

Spring Bootアプリケーションでコンテキストパスを変更するさまざまな方法を学ぶ

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

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

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

デフォルトでは、組み込みサーバーはポート8080で起動します。 Let’s see how we can provide a different value in an application.properties file

server.port=8081

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

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

server:
  port : 8081

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

2.1. 環境固有のポート

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

これは、プロパティファイルアプローチとSpringプロファイルを組み合わせることで簡単に実現できます。 Specifically, we can create a property file for each environment.

たとえば、次の内容の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 {

    @Override
    public void customize(ConfigurableWebServerFactory factory) {
        factory.setPort(8086);
    }
}

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

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

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

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

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

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

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

5. 評価の順序

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

基本的に、構成の優先順位は次のとおりです。

  • 組み込みサーバー構成

  • コマンドライン引数

  • プロパティファイル

  • メインの@SpringBootApplication構成

6. 結論

このクイックチュートリアルでは、Spring Bootアプリケーションでサーバーポートを構成する方法を説明しました。

例のソースコードは利用可能なover on GitHubです。