Spring BootアプリケーションがリッスンするTCP / IPポートを構成して、デフォルトのポート8080を使用しないようにする方法を教えてください。
server.port=8080
アプリケーションのプロパティで設定します。この構成はのServerProperties.class
クラスにありorg.springframework.boot.autoconfigure.web
ます。
Spring BootアプリケーションがリッスンするTCP / IPポートを構成して、デフォルトのポート8080を使用しないようにする方法を教えてください。
server.port=8080
アプリケーションのプロパティで設定します。この構成はのServerProperties.class
クラスにありorg.springframework.boot.autoconfigure.web
ます。
回答:
ドキュメントの中で述べてどちらかの設定server.port
JVMにコマンドラインオプションを使用して、システムプロパティとして、-Dserver.port=8090
または追加application.properties
で/src/main/resources/
持ちます
server.port=8090
ランダムなポートの使用
server.port=0
@Value("${local.server.port}")
$ SERVER_PORT=8090 java -jar <path/to/my/jar>
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=YYYY
、YYYY
が優先されますXXXX
。これが、Spring Boot Externalized Configurationが魅力的な理由です。
Spring Bootアプリケーションの組み込みTomcatのポートを変更するには、主に2つの方法があります。
application.propertiesを変更する
まず、/ resourcesフォルダーのapplication.propertiesファイルを試すことができます。
server.port = 8090
VMオプションを変更する
2番目の方法では、ローカルでのみ必要なファイルの変更やチェックインを避けたい場合は、vm argを使用できます。
[実行]-> [構成の編集]-> [VMオプション]に移動します
-Dserver.port=8090
さらに、詳細情報が必要な場合は、次のブログ投稿をここで確認できます 。SpringBootアプリケーションのポートの変更
Spring Bootはさまざまな設定の外部化メカニズムを提供するため(さまざまなPropertySource
実装やプロセッサをEnvironment
オブジェクトに順番に接続することにより)、次の方法でjarアーカイブの外部にある任意のプロパティを設定できます。
コマンドライン引数を介してアプリケーション引数としてプロパティを渡す
java -jar <path/to/my/jar> --server.port=7788
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}'
JVMシステムプロパティの定義
java -Dserver.port=7788 -jar <path/to/my/jar>
OS環境変数を定義する
U * IXシェル
SERVER_PORT=7788 java -jar <path/to/my/jar>
ウィンドウズ
SET SERVER_PORT=7788
java -jar <path/to/my/jar>
プロパティを構成ファイルに./config/application.properties
配置する
server.port=7788
そして実行します:
java -jar <path/to/my/jar>
プロパティを配置 ./config/application.yaml
server:
port: 7788
そして実行します:
java -jar <path/to/my/jar>
プロパティを配置 ./application.properties
server.port=7788
そして実行します:
java -jar <path/to/my/jar>
プロパティを配置 ./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によって行われました。
また、プログラムでポートを構成することもできます
@Configuration
public class ServletConfig {
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
return (container -> {
container.setPort(8012);
});
}
}
@Configuration
の代わりに@Controller
?その場合は更新してください。
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
使用している場合はapplication.yml
、次の行を追加します
server:
port: 9000
もちろん、ランダムポートの場合は0です。
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
プログラムでそれを行う方法が必要な場合は、起動時に設定できます。
System.getProperties().put( "server.port", 80 );
SpringApplication.run(App.class, args);
これは、環境に依存するポートなどに役立つ場合があります。ごきげんよう
System.setProperty("server.port", 80);
同じことを達成する別の方法です。
EmbeddedServletContainerFactory
構成(JavaベースまたはXML)内でBean をオーバーライドすることにより、ポートを指定できます。そこでは、使用する埋め込みサーブレットコンテナのポートを指定できます。Spring Boot-Core "Embedded Servlet Container Support"の段落とその例を参照してください。お役に立てれば。
ではapplication.properties
、リソース内のファイルの存在:
server.port=8082
他の回答を拡張するには:
統合テストでポートを構成する方法を説明するテスト用のドキュメントのセクションがあります:
統合テストでは、ポート構成はアノテーション@SpringBootTest
とwebEnvironment
値を使用して行われます。
@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.port
ifが定義さ場合。
@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() {
}
}
スプリングブートアプリケーションが起動すると、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ポートでサーバーを起動します。
ビルドツールとしてgradleを使用している場合は、application.ymlファイルでサーバーポートを次のように設定できます。
server:
port: 8291
mavenを使用している場合、portはapplication.propertiesファイルで次のように設定できます。
server.port: 8291
server.port = 8291
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
これをapplication.properties
ファイルに追加します
server.port= 8080
server.port 8080
... Javaプロパティファイルの誤った構文である
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
ファイルが置かれているディレクトリに配置しました。
から:
デフォルトでは、組み込みの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
実際、最も簡単な方法は、server.portプロパティを設定することです。
STSをIDEとして使用している場合、バージョン3.6.7以降、実際にはプロパティファイルを開くためのSpringプロパティエディタがあります。
このエディターは、すべてのSpring Bootプロパティのオートコンプリートを提供します。ポートを書き込んでCTRL +スペースを押すと、server.portが最初のオプションになります。
たとえば、他の回答で言及されているように、server.port = 8080プロパティを使用するのは間違いなく方法です。環境プロパティを公開することもできることを述べたかっただけです。
SERVER_PORT=8080
スプリングブーツなので「。」の交換が可能です。"_"の場合、最近のバージョンの環境変数では大文字から小文字に。これは、application.properties
システムプロパティを追加/編集したり、コマンドライン(つまり-Dserver.port=$PORT
)を介して渡したりせずに、環境変数を定義するだけのコンテナで特に便利です。
SERVER_PORT=8081 mvn spring-boot:run
これが役に立てば幸い
application.properties => server.port = 8090 application.yml => サーバ ポート:8090
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);
}
}