web-dev-qa-db-ja.com

Spring Bootアプリケーション用にポートを設定する方法

Spring Bootアプリケーションが待機するTCP/IPポートをどのように設定すればよいのですか。そのため、デフォルトポートの8080は使用されません。

667
Paul Verest

docsで述べられているように jvm server.portにコマンドラインオプションを使用してシステムプロパティとして-Dserver.port=8090を設定するか、またはapplication.properties/src/main/resources/を追加します。

server.port = 8090

ランダムポート用

server.port=0
1040
Paul Verest

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

application.propertiesを変更します

まず、/ resourcesフォルダーにあるapplication.propertiesファイルを試してください。

server.port = 8090

application.properties file

VMオプションを変更します

2つ目の方法は、ファイルを変更してローカルにしか必要のないものをチェックインしたくない場合は、vm argを使用できます。

[実行] - > [設定の編集] - > VM optionsに移動します。

-Dserver.port=8090

Change port with a vm arg

さらに詳しい情報が必要な場合は、こちらのブログ記事をご覧ください。 Spring Bootアプリケーションのポートの変更

159
anataliocs

Spring Bootは さまざまな設定外部化メカニズムを提供する (さまざまなPropertySource実装および/またはEnvironmentオブジェクトに順番に配線されたプロセッサを通じて)次の方法でjarアーカイブの任意のプロパティoutsideを設定できます。

  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>
      
    • Windows

      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で待機します。

これは、PropertySourceのデフォルトプロパティを優先順位を低くして(通常はアーカイブにパッケージ化するか、またはソースにコーディングして)実行時環境でオーバーライドすることで非常に便利です。そしてそれはSpring Bootのデザイン哲学です。

箱から出してすぐに意見を述べることができますが、要件がデフォルトから逸脱し始めるとすぐに邪魔になりません。


SERVER_NAMEからserver.nameへの変換は リラックスバインディングによって行われました

114
tan9

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

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

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
72
ayurchuk

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

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

Spring Boot 2.0 以降、動作するコマンドは次のとおりです(手がかりは here )。

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

application.ymlを使用している場合は、次の行を追加してください。

server:
     port: 9000

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

44
gatolgaj

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
39
OlivierTerrien

application.propertiesに以下のプロパティを含める

server.port=8080
32
Chandramouli

プログラム的に実行する方法が必要な場合は、起動時に設定できます。

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

これは環境に依存するportsのようなものに役立つかもしれません。良い一日を

17
Luis Mauricio

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

15
nndru

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

テストのためのドキュメントに統合テストでポートを設定する方法を説明するセクションがあります。


統合テストでは、アノテーション@SpringBootTestwebEnvironmentの値を使ってポート設定を行います。


ランダムポート

@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)

@Value("${local.server.port}")と同じ@LocalServerPortを使って値を注入することができます。

  • 例:

ランダムポートテストの設定

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

定義済みポート

@SpringBootTest(webEnvironment=WebEnvironment.DEFINED_PORT)

定義されている場合はserver.portから値を取ります。

  • @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() {
    }

}
14
Pau

Spring Bootアプリケーションが起動すると、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 Bootアプリケーションを起動するときに、次のように引数を使用できます。

--server.portを使用する

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

-Dserver.portを使用する

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

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

--portまたは-Dportを短縮して使用したJavaコマンドの使用

--server.portと-Dserver.portを短くするには、serverキーワードを削除して、 - portや-Dportなどの短いキーワードにします。短いキーワードでも構いません。ここではportを短いキーワードとして使っています。それを達成するためには、次のようにプロパティファイルにプレースホルダを設定する必要があります。

Application.propertiesを使用する

server.port=${port:8282}

Application.ymlを使う

server:
   port: ${port:8282}

引数としてポートを渡さない場合、デフォルトではserverは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()というメソッドがあります。デフォルトのポートを変更したいのであれば、Mapを作成して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);
        }     
} 

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

13
Humoyun

リソース内に存在するapplication.propertiesファイル内:

server.port=8082
13
Amit Gujarathi

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

a) application.properties file setを使用している場合

server.port = 8090

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

server:
     port: 8090

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

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

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

server.port = 65535

その敵をどこに置くか:

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

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

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

11
ZhaoGang

Application.propertiesを変更することによって、サーバー構成を変更できるものは他にもたくさんあります。セッションタイムアウト、アドレス、ポートなどのように。

ref: 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
10
deepesh kumar
  1. 誰もが言ったように、あなたはapplication.propertiesで指定することができます
    server.port = 9000 (他の値でも構いません)

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

9
Rakesh

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

IDEとしてSTSを使用している場合は、バージョン3.6.7以降、実際に Spring Properties Editor を使用してプロパティファイルを開くことができます。

このエディタは、すべてのSpring Bootプロパティにオートコンプリートを提供します。 port と書いてCTRL + SPACEを押すと、 server.port が最初の選択肢になります。

7
Adrian Cosma

これをapplication.propertiesファイルに追加してください。

server.port= 8080
7
Sridhar Battala

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

 server.port = 8080

"portはあなたの選択次第で、アプリケーションをホストしたい場所に依存します。"

7
Ashwini

この助けが願っています

 application.properties => 
 
 server.port = 8090 
 
 [application.yml => 
 
サーバー
ポート:8090 
7

例えば他の答えで述べたようにプロパティserver.port = 8080を使うことは間違いなく行く方法です。環境プロパティを公開することもできます。

SERVER_PORT=8080

春のブーツは "。"を置き換えることができますので。最近のバージョンでは、 "_"の場合は環境変数の大文字、小文字の場合は小文字です。これは、application.propertiesを追加/編集したり、コマンドラインでシステムプロパティを渡したりせずに、その環境変数を定義するだけでよいコンテナで特に便利です(つまり、-Dserver.port=$PORT)。

7
Ulises

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

プロジェクトのapplication.propertiessrc/main/resourcesを入れてそこに渡してください。

server.port=****

****はポート番号を表します。

5
Shubham Khurana

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

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

  2. application.xmlserver.port=XXXXを追加

4
opensourcegeek

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

server.port = 8090
4
Abhijeet

Springブートポートを設定するためにSERVER_PORT環境変数を使うこともできます。環境変数を設定してアプリを再起動するだけです。

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

これらの環境変数をシステム全体で設定しない場合は、同じセッションで起動アプリを実行する必要があります。

3
Ali Dehghani

Tomcatが組み込まれているため、springbootはport:8080上で動作します。場合によっては、エラーport 8080 already in useがスローされることがあります。このような問題を回避するために、サーバーポートを設定できます。

Application.propertiesを使用する

server.port=9898を追加

実行時設定

以下の引数でアプリケーションを実行してください。

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

3
Mohanraj

あなたのスプリングブートプロジェクトのresourcesフォルダにあるapplication.propertiesファイルであなたのportを設定することができます。

server.port="port which you need"
3
Automator1992

それを行うには3つの方法があります

1 application.propertiesファイルにserver.portプロパティを設定します

server.port = 8090

2 application.ymlファイルにサーバーポートプロパティを設定します。

server:
     port: 8090

3 mainメソッドでプロパティをシステムプロパティとして設定します

System.setProperty("server.port","8090");
3
Amandeep Singh

デフォルトのポートは8080ですが、以下に示すようにapplication.propertiesでポート番号をカスタマイズできます。

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
server.port = 5050 -- #here we can give any port number.
2
Lova Chittumuri

ブートプロジェクトで作業していて、ポートを設定したい場合は、注記のようにapplication.propertiesファイルに入力を指定できます。プロパティファイルはsrc/main/resourceにあるはずです。

春のホテル

server.port = 9999 CMDを使用している場合は、次のコマンドを実行します。 -Dserver.port = 9999 デフォルトポートの場合はserver.port = 0このポート番号を使用しているポートがないことを確認します。

2
saravanan

Gradle Spring Port を検索した場合、この質問は最初の結果になります。

Gradleを使用している場合、Spring Boot Gradle Pluginがすでに適用されていれば、次のようなことができます。

bootRun {
    args += ["--server.port=[PORT]"]
}

もっと洗練された答えについては私の答えを見てください ここ

2
Moe Pad

コマンド環境でアプリをjarファイルとして実行する場合は、接頭辞として「SERVER_PORT = ***」と入力します。実行する完全なコマンドは以下のようになります。

SERVER_PORT=8080 Java -jar ***.jar

Linuxでバックグラウンドでアプリを実行したい場合は、 'Nohup'を指定したコマンドは次のようになります。

SERVER_PORT=8080 Nohup Java -jar ***.jar &
1
Rong.l

アプリケーションのプロパティに1行追加する

server.port = 8090
1
Joyson Rego

https://stackoverflow.com/a/36865796/1587329 および https://stackoverflow.com/a/40799750/1587329 グラドルワンライナー ある

SERVER_PORT=9090 gradle bootRun
1
serv-inc

" server.port = 8080 "は、実行中のアプリケーションがmainメソッドを通じてjarとして動作している場合にのみ機能します。

Tomcatコンテナを介してこのアプリケーションをwarファイルとして実行している場合、この設定は機能しません。

1
mujeeb rahman

すべての答えとは別に、ほとんどのIDE(Springプラグインを備えたIntelliJ、STS)には、SpringBootでサポートされているすべての構成キーを提示する機能があります。 (つまり、すべての意見のある構成キーワード)

enter image description here

IntellijのSpringプラグイン

1
Sudip Bhandari

これは私のために働いた:

カスタムコンテナクラスを追加しました:

@Component
public class CustomContainer implements EmbeddedServletContainerCustomizer {

    @Override
    public void customize(ConfigurableEmbeddedServletContainer configurableEmbeddedServletContainer) {
       configurableEmbeddedServletContainer.setPort(8888);
    }

}

しかし、これはまだポート8888を使用していませんでした。

それから、私のメインメソッドの "@SpringBootApplication"クラスで、 "scanBasePackages"プロパティをこのように設定します。(scanBasePackages = {"custom container package"})

@SpringBootApplication(scanBasePackages = {"com.javabrains.util"})
public class CourseApiApp {

    public static void main (String args []) {
        SpringApplication.run(CourseApiApp.class, args);
    }
}

そして、カスタムコンテナに設定されているポートを拾い始めました。

1

春のブートではapplication.propertiesファイルでサービス公開ポートを簡単に設定できます。

server.port=portnumber

特にポートを設定しないと、ポート80でサービスを開こうとします。すでに使用されている場合は、埋め込みコンテナでサービスは開始されません。

1

デフォルトでは、Spring Tomcatアプリケーションはデフォルトのポート8080で起動するTomcatサーバーで起動します。springでは、次のようにカスタマイズできます。

_ note _ - あなたは server.port = 0を使うことができます spring bootは私たちのために割り当てられていない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
1
anandchaugule

私の場合は文を追加する

server.port=${port:8081}

デフォルトのTomcatサーバーポートを上書きします。

0
Mercurial

あなたのポート番号がランダムになる可能性がある場合は、あなたのapplication.propertiesserver.port=${random.int(4)}でrandom関数を使うことができます。

0
Devilluminati

server.port = 0ランダムポート用

server.port =カスタム8080ポートの場合は8080

0
Jijo

デフォルトのポートは8080ですが、以下に示すようにapplication.propertiesでポート番号をカスタマイズできます。

application.properties

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
server.port = 5050 -- #here we can give any port number.
0
Lova Chittumuri