Spring Bootアプリケーションのポートを構成する方法


798

Spring BootアプリケーションがリッスンするTCP / IPポートを構成して、デフォルトのポート8080を使用しないようにする方法を教えてください。


5
誰かが興味を持っている場合、ここでは複数のポートを持つことがどのように示されている- stackoverflow.com/questions/36357135/...
Betlista

構成に「yml」ファイルを使用する場合、このサーバーを使用できます。ポート:8081また、メインクラスに「@SpringBootApplication」として注釈を付け、@ EnableAutoConfigurationを削除します
Keaz

server.port = 8080を追加するためのプロジェクト[application.properties]
Lahiru Samishka

server.port=8080アプリケーションのプロパティで設定します。この構成はのServerProperties.classクラスにありorg.springframework.boot.autoconfigure.webます。
Atif

回答:


1227

ドキュメントの中で述べてどちらかの設定server.portJVMにコマンドラインオプションを使用して、システムプロパティとして、-Dserver.port=8090または追加application.properties/src/main/resources/持ちます

server.port=8090

ランダムなポートの使用

server.port=0

47
ランダムなポートが使用されている場合、ポート情報は次のように取得できます@Value("${local.server.port}")
azizunsal

42
実際のコマンドラインオプションは--Dserver.port = 8090ではなく--server.port = 8090です。docs.spring.io/spring-boot/docs/current/reference/html/...
オプスターES忍者-アルパース

1
この回答への賛辞として:春のドキュメントによると、あなたが置くことができる他の道がありますapplication.properties。私の場合、それは非常に役に立ちました。
sargas

14
-Dserver.port = XXXXが機能しませんでした。私はOS環境変数モードを使用しました: $ SERVER_PORT=8090 java -jar <path/to/my/jar>
Soumya Kanti

10
(1)java -Dserver.port=XXXX -jar <path/to/my/jar>と(2)の両方がjava -jar <path/to/my/jar> --server.port=YYYY機能します。最初のコマンドは、定義server.portシステムプロパティを、そして第2のコマンドは、(コマンドライン引数を介してプロパティを渡すString... argsにおけるmain方法)。さらに、で実行するとjava -Dserver.port=XXXX -jar <path/to/my/jar> --server.port=YYYYYYYYが優先されますXXXX。これが、Spring Boot Externalized Configurationが魅力的な理由です。
tan9 2016年

210

Spring Bootアプリケーションの組み込みTomcatのポートを変更するには、主に2つの方法があります。

application.propertiesを変更する

まず、/ resourcesフォルダーのapplication.propertiesファイルを試すことができます。

server.port = 8090

application.propertiesファイル

VMオプションを変更する

2番目の方法では、ローカルでのみ必要なファイルの変更やチェックインを避けたい場合は、vm argを使用できます。

[実行]-> [構成の編集]-> [VMオプション]に移動します

-Dserver.port=8090

vm argを使用してポートを変更する

さらに、詳細情報が必要な場合は、次のブログ投稿をここで確認できます 。SpringBootアプリケーションのポートの変更


STS 4では、実行時->実行構成->メインであり、次にパラメーター名と値を含むテーブルまでスクロールします
serv-inc

155

Spring Bootはさまざまな設定の外部化メカニズムを提供するため(さまざまなPropertySource実装やプロセッサをEnvironmentオブジェクトに順番に接続することにより)、次の方法でjarアーカイブの外部にある任意のプロパティを設定できます。

  1. コマンドライン引数を介してアプリケーション引数としてプロパティを渡す

    java -jar <path/to/my/jar> --server.port=7788
  2. SPRING_APPLICATION_JSON(Spring Boot 1.3.0以降)のプロパティから

    • U * IXシェルで環境変数を定義します。

      SPRING_APPLICATION_JSON='{"server.port":7788}' java -jar <path/to/my/jar>
    • Javaシステムプロパティを使用する場合:

      java -Dspring.application.json='{"server.port":7788}' -jar <path/to/my/jar>
    • コマンドライン引数を渡します:

      java -jar <path/to/my/jar> --spring.application.json='{"server.port":7788}'
  3. JVMシステムプロパティの定義

    java -Dserver.port=7788 -jar <path/to/my/jar>
  4. OS環境変数を定義する

    • U * IXシェル

      SERVER_PORT=7788 java -jar <path/to/my/jar>
    • ウィンドウズ

      SET SERVER_PORT=7788
      java -jar <path/to/my/jar>
  5. プロパティを構成ファイル./config/application.properties 配置する

    server.port=7788

    そして実行します:

     java -jar <path/to/my/jar>
  6. プロパティを配置 ./config/application.yaml

    server:
        port: 7788

    そして実行します:

     java -jar <path/to/my/jar>
  7. プロパティを配置 ./application.properties

    server.port=7788

    そして実行します:

     java -jar <path/to/my/jar>
  8. プロパティを配置 ./application.yaml

    server:
        port: 7788

    そして実行します:

     java -jar <path/to/my/jar>

上記の方法をすべて組み合わせることができ、リストの前者の構成が後者の構成よりも優先されます。

例えば:

SERVER_PORT=2266 java -Dserver.port=5566 -jar <path/to/my/jar> --server.port=7788

サーバーが起動し、ポート7788で待機します。

これは、優先度の低い(そして通常はアーカイブにパッケージ化されるか、ソースにコード化される)PropertySourcesのデフォルトプロパティを提供し、ランタイム環境でそれをオーバーライドするのに非常に役立ちます。そしてそれはSpring Bootの設計哲学です:

すぐに意見を述べられますが、要件がデフォルトから逸脱し始めたら、すぐに邪魔にならないようにします。


SERVER_NAMEへのserver.name変換はRelaxed Bindingによって行われました。


108

また、プログラムでポートを構成することもできます

@Configuration
public class ServletConfig {
    @Bean
    public EmbeddedServletContainerCustomizer containerCustomizer() {
        return (container -> {
            container.setPort(8012);
        });
    }
}

これは、独自の構成ファイルにポートがあり、実行時に設定したい場合に機能し、非常に便利です。
Xdg 2015年

4
これは、環境変数からポートを取得するために、アプリケーションをAWS Elastic Beanstalkサービスにデプロイする必要があるときに役立ちました。
Martin Hansen

これは、必要なものが自己完結型の単体テストまたは統合テスト+1である場合に非常に役立ちます。
Priidu Neemre

ポートの環境変数がすでに別の名前で定義されている場合に非常に役立ちます。
イグアロ2016

2
それはIs'nt @Configurationの代わりに@Controller?その場合は更新してください。
ラッキー

82

Javaコードでポートを設定できます。

HashMap<String, Object> props = new HashMap<>();
props.put("server.port", 9999);

new SpringApplicationBuilder()
    .sources(SampleController.class)                
    .properties(props)
    .run(args);

またはapplication.ymlで:

server:
    port: 9999

またはapplication.propertiesで:

server.port=9999

または、コマンドラインパラメータとして:

-Dserver.port=9999

HashMapの使用は、applications.propertiesまたは.ymlでポートが設定されていない場合にのみ機能します。
ミルゴ

79

ローカルで実行したい場合は、これを使用してください-

mvn spring-boot:run -Drun.jvmArguments='-Dserver.port=8085'

Spring Boot 2.0の時点で、動作するコマンドは次のとおりです(手がかりがここにありました)。

mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8085

1
Spring Boot 2以降では、を使用する必要がありますspring-boot.run.jvmArguments
mapm 2018

54

使用している場合はapplication.yml、次の行を追加します

server:
     port: 9000

もちろん、ランダムポートの場合は0です。


1
これはうまくいかなかったようです。私はapplication.ymlでserver.portを使用し、それが機能しました
yathirigan 2015年

47

Springのドキュメントで説明されているようにでを行うにはいくつかの方法があります。

コマンドラインでポートを設定するか(たとえば8888)

-Dserver.port=8888 または --server.port=8888

例: java -jar -Dserver.port=8888 test.jar

または、application.propertiesでポートを設定します

server.port=${port:4588}

または(yaml構文を含むapplication.yml内)

server:
   port: ${port:4588}

-Dport(または-Dserver.port)によって渡されたポートがコマンドラインで設定されている場合、このポートが考慮されます。そうでない場合、ポートはデフォルトで4588になります。

環境変数に関係なく、プロパティファイルでポートを強制したい場合は、次のように記述するだけです。

server.port=8888


23

プログラムでそれを行う方法が必要な場合は、起動時に設定できます。

System.getProperties().put( "server.port", 80 );
SpringApplication.run(App.class, args);

これは、環境に依存するポートなどに役立つ場合があります。ごきげんよう


2
System.setProperty("server.port", 80);同じことを達成する別の方法です。
hd1

@ hd1、私はメインの回答に回答を追加しました。確認し、必要に応じて変更してください
Luis Mauricio '30

18

EmbeddedServletContainerFactory構成(JavaベースまたはXML)内でBean をオーバーライドすることにより、ポートを指定できます。そこでは、使用する埋め込みサーブレットコンテナのポートを指定できます。Spring Boot-Core "Embedded Servlet Container Support"の段落とその例を参照してください。お役に立てれば。



:ここでは、プログラムオーバーライドセクションに現在のリンクですdocs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/...
jocull


17

他の回答を拡張するには:

統合テストでポートを構成する方法を説明するテスト用のドキュメントのセクションがあります:


統合テストでは、ポート構成はアノテーション@SpringBootTestwebEnvironment値を使用して行われます。


ランダムポート:

@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)

@LocalServerPortと同じ値を使用して値を挿入でき@Value("${local.server.port}")ます。

  • 例:

ランダムポートテストの構成:

@RunWith(SpringRunner.class
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class ExampleTest {
   ...
   @LocalServerPort //to inject port value
   int port;
}

定義されたポート:

@SpringBootTest(webEnvironment=WebEnvironment.DEFINED_PORT)

それは server.portifが定義さ場合。

  • を使用して定義されて@TestPropertySource(properties = "server.port=9192")いる場合、他の定義された値を上書きします。
  • そうでない場合、値は src/test/resources/application.properties存在し(存在する場合)ます。
  • そして最後に、それが定義されていない場合、デフォルトで始まります 8080

例:

定義されたポートテスト構成:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
@TestPropertySource(properties = "server.port=9192")
public class DemoApplicationTests {

    @Test
    public void contextLoads() {
    }

}

17

スプリングブートアプリケーションが起動すると、Tomcatなどの組み込みサーバーはデフォルトポートで起動します。組み込みのTomcatは、デフォルトでは8080ポートで始まります。デフォルトのサーバーポートを変更する方法はたくさんあります。

プロパティファイル(.properties / .yml)の使用

プロパティファイルを使用してサーバーポートを変更するには、server.portプロパティを設定する必要があります。

a。src \ main \ resources \ application.propertiesなどのクラスパスでapplication.propertiesを使用 する

server.port = 8585

サーバーは8585ポートで起動します。ランダムなサーバーポートを取得するには、プロパティに0を割り当てます。

server.port = 0

これで、スプリングブートは、システム内のどのサーバーでも現在使用されていないポートでサーバーを起動します。

b。src \ main \ resources \ application.ymlなどのクラスパスでapplication.ymlを使用する

server:
  port: 8585 

サーバーは8585ポートで起動します。

ランダムポートには、0を割り当てます。

server:
  port: 0 

--server.portまたは-Dserver.portでjavaコマンドを使用する

my-app.jarという名前の実行可能JARがあるとすると、javaコマンドを使用してSpringブートアプリケーションを起動するときに、次のように引数を使用できます。

--server.portの使用

java -jar my-app.jar  --server.port=8585

-Dserver.portの使用

java -jar -Dserver.port=8585 my-app.jar

サーバーは8585ポートで起動します。

javaコマンドを--portまたは-Dportと組み合わせて使用​​する

--server.portと-Dserver.portを短くするために、serverキーワードを削除して--portや-Dportなどの短いキーワードにすることができます。任意の短いキーワードを使用できます。ここでは、短いキーワードとしてポートを使用しています。これを実現するには、次のようにプロパティファイルでプレースホルダーを構成する必要があります。

application.propertiesの使用

server.port=${port:8282}

application.ymlの使用

server:
   port: ${port:8282}

引数としてポートを渡さない場合、デフォルトでサーバーは8282で起動します。別のポートが必要な場合は、次のように引数で目的のポートを渡す必要があります。my-app.jarという名前の実行可能JARがあるとします。

--portの使用

java -jar my-app.jar --port=8585 

-Dportの使用

java -jar -Dport=8585 my-app.jar 

サーバーは8585ポートで起動します。

プログラムによるSpringApplicationでのSERVER_PORTの使用

SpringApplicationには、スプリングブートのデフォルトプロパティを変更するために使用されるsetDefaultProperties()としてのメソッドがあります。デフォルトのポートを変更したい場合は、マップを作成し、SERVER_PORTキーでポートを配置する必要があります。例を見つけてください。

MyApplication.java

package com.humoyun;

import java.util.HashMap;
import java.util.Map;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication application = new SpringApplication(MyApplication.class);
        Map<String, Object> map = new HashMap<>();
        map.put("SERVER_PORT", "8585");
        application.setDefaultProperties(map);
        application.run(args);
        }     
} 

スプリングブートは8585ポートでサーバーを起動します。


17

使用しているアプリケーション構成ファイルに応じて、3つの方法があります。

a)application.propertiesファイルセットを使用している場合

server.port = 8090

b)application.ymlファイルを使用している場合は、サーバーポートプロパティをYAML形式で以下のように設定します

server:
     port: 8090

c)メインメソッドでプロパティをSystemプロパティとして設定することもできます

System.setProperty("server.port","8090");

15

ビルドツールとしてgradleを使用している場合は、application.ymlファイルでサーバーポートを次のように設定できます。

server:
  port: 8291

mavenを使用している場合、portはapplication.propertiesファイルで次のように設定できます。

server.port: 8291

application.propertiesの場合server.port = 8291
iQuestProgrammer

14

application.propertiesを変更することにより、サーバー構成で変更できる他の多くのものがあります。セッションのタイムアウト、アドレス、ポートなどのように。以下の投稿を参照してください

参照:http : //docs.spring.io/spring-boot/docs/1.4.x/reference/html/common-application-properties.html

以下のようにいくつか使用しました。

server.session.timeout=1
server.port = 3029
server.address= deepesh

13
  1. 誰もが言ったように、application.propertiesで
    server.port = 9000を指定できます(他の値にすることもできます)

  2. プロジェクトでスプリングアクチュエータを使用している場合、デフォルトでは
    8080を指し、変更したい場合は、application.propertiesで
    management.port = 9001と記述します(他の値でもかまいません)。



12

application.propertiesファイルに次の行を追加します。

server.port = 65535

そのファイを配置する場所:

24.3アプリケーションプロパティファイル

SpringApplicationは、次の場所にあるapplication.propertiesファイルからプロパティをロードし、Spring環境に追加します。

A /config subdirectory of the current directory
The current directory
A classpath /config package
The classpath root

リストは優先順位で並べられています(リストの上位に定義されているプロパティは下位に定義されているプロパティをオーバーライドします)。

私の場合、jarファイルが置かれているディレクトリに配置しました。

から:

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config-application-property-files


12

デフォルトでは、組み込みのTomcatサーバーを使用して、Springブートアプリがデフォルトのポート8080で開始します。

server.port = 0を使用すると、スプリングブートにより、割り当てられていないhttpランダムポートが検出されます。

1)application.properties

server.port=2020

2)application.yml

server:  
     port : 2020

3)プログラムでサーバーポートを変更する

3.1)WebServerFactoryCustomizerインターフェースを実装する-Spring 2.x

@Component
public class MyTomcatWebServerCustomizer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {

    @Override
    public void customize(TomcatServletWebServerFactory factory) {
        // customize the factory here
        factory.setPort(2020);
    }
}

3.2)EmbeddedServletContainerCustomizerインターフェースを実装する-Spring 1.x

@Component
public class CustomizationBean implements EmbeddedServletContainerCustomizer {

    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {
        // customize here
        container.setPort(2020);
    }
}

4)コマンドラインオプションを使用する

 java -jar spring-boot-app.jar -Dserver.port=2020

10

実際、最も簡単な方法は、server.portプロパティを設定することです。

STSをIDEとして使用している場合、バージョン3.6.7以降、実際にはプロパティファイルを開くためのSpringプロパティエディタがあります。

このエディターは、すべてのSpring Bootプロパティのオートコンプリートを提供します。ポートを書き込んでCTRL +スペースを押すと、server.portが最初のオプションになります。


1
またはIntellij IDEAを使用している場合は、オートコンプリートも機能します。;)
ラッキー

9

たとえば、他の回答で言及されているように、server.port = 8080プロパティを使用するのは間違いなく方法です。環境プロパティを公開することもできることを述べたかっただけです。

SERVER_PORT=8080

スプリングブーツなので「。」の交換が可能です。"_"の場合、最近のバージョンの環境変数では大文字から小文字に。これは、application.propertiesシステムプロパティを追加/編集したり、コマンドライン(つまり-Dserver.port=$PORT)を介して渡したりせずに、環境変数を定義するだけのコンテナで特に便利です。


SERVER_PORT=8081 mvn spring-boot:run
nobar


8

application.propertiesファイルにポート番号を指定すると、問題が解決します

 server.port = 8080

「ポートは、アプリケーションをホストする場所によって異なります」


7

以下の方法でポートを追加できます。

  1. 実行->構成セクション

  2. application.xml追加server.port=XXXX


1
あなたが意味するかapplication.yml、あなたはどのようなIDEを使用していますか?具体的にご記入ください。
ラッキー

7

/ src / main / resources /の下のapplication.propertiesで設定できます

server.port = 8090

7

ただ、持っているapplication.properties中でsrc/main/resourcesのプロジェクトの、そこに与えます

server.port=****

ここで、****ポート番号を指します。


7

1.1プロパティファイル経由で更新します。

/src/main/resources/application.properties

server.port = 8888

yamlファイルを使用して更新します。

   server:

     port: 8888

EmbeddedServletContainerCustomizer

@Component
public class CustomContainer implements EmbeddedServletContainerCustomizer {

    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {

        container.setPort(8888);

    }

}

6

また、SERVER_PORT環境変数を使用してSpring Bootポートを構成することもできます。環境変数を設定してアプリを再起動するだけです:

set SERVER_PORT=9999 // on windows machine
export SERVER_PORT=9999 // on linux

これらの環境変数をシステム全体に設定しない場合は、同じセッションでブートアプリを実行する必要があることに注意してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.