Spring Boot uygulaması için bağlantı noktası nasıl yapılandırılır


797

Spring Boot uygulaması tarafından dinlenen TCP / IP bağlantı noktasını nasıl yapılandırırım, bu nedenle 8080 varsayılan bağlantı noktasını kullanmaz.


5
İlgilenen biri varsa, burada birden fazla bağlantı noktasının nasıl gösterileceği gösterilir - stackoverflow.com/questions/36357135/…
Betlista

Yapılandırma için "yml" dosyasını kullanırsanız, bu sunucuyu kullanabilirsiniz: bağlantı noktası: 8081 Ayrıca ana sınıfa "@SpringBootApplication" olarak ek açıklama ekleyebilir ve @ EnableAutoConfiguration
Keaz


server.port=8080uygulama özelliklerinde ayarlanır . bu yapılandırma ServerProperties.classsınıfın altındadır org.springframework.boot.autoconfigure.web.
Atif

Yanıtlar:


1226

As docs söyledi ya set server.portjvm için komut satırı seçeneğini kullanarak sistem özelliği olarak -Dserver.port=8090veya eklenti application.propertiesiçinde /src/main/resources/olan

server.port=8090

Rastgele bağlantı noktası kullanımı için

server.port=0

47
Rastgele bağlantı noktası kullanıldığında, bağlantı noktası bilgileri ile alabilir@Value("${local.server.port}")
azizunsal

42
Aslında komut satırı seçeneği -server.port = 8090 değil -server.port = 8090'dır. docs.spring.io/spring-boot/docs/current/reference/html/…
Opster ES Ninja - Alper

1
Bu cevaba bir iltifat olarak: İlkbahar dokümanlarına göre koyabileceğiniz başka yollar da var application.properties. Benim durumumda bu çok yardımcı oldu.
Sargas

14
-Dserver.port = XXXX benim için çalışmadı. İşletim sistemi ortam değişken modunu kullandım:$ SERVER_PORT=8090 java -jar <path/to/my/jar>
Soumya Kanti

10
Hem (1) java -Dserver.port=XXXX -jar <path/to/my/jar>hem de (2) java -jar <path/to/my/jar> --server.port=YYYYçalışır. İlk komut tanımlar server.portsistem özelliği, ikinci komuta (komut satırı değişkenleri yoluyla özelliği geçirmeye String... argsiçinde mainyöntemi). Eğer çalıştırmak Ayrıca, eğer java -Dserver.port=XXXX -jar <path/to/my/jar> --server.port=YYYY, YYYYdaha önceliklidir XXXXBahar Önyükleme externalized Yapılandırma çok sevimli neden budur.
tan9

209

Bir Spring Boot Uygulamasındaki Gömülü Tomcat'teki bağlantı noktasını değiştirmenin iki ana yolu vardır.

Application.properties dosyasını değiştirin

İlk olarak / resources klasöründeki application.properties dosyasını deneyebilirsiniz:

server.port = 8090

application.properties dosyası

VM seçeneğini değiştirme

İkinci yol, herhangi bir dosyayı değiştirmekten ve yalnızca yerelde ihtiyacınız olan bir şeyi kontrol etmekten kaçınmak istiyorsanız, bir vm arg kullanabilirsiniz:

Çalıştır -> Yapılandırmaları Düzenle -> VM seçeneklerine gidin

-Dserver.port=8090

Bağlantı noktasını vm arg ile değiştirme

Ayrıca, daha fazla bilgiye ihtiyacınız varsa, aşağıdaki blog gönderisini buradan görüntüleyebilirsiniz: Bir Spring Boot Uygulamasındaki bağlantı noktasını değiştirme


STS 4'te çalışma sırasında -> çalışma konfigürasyonları -> ana, ardından Parametre Adı ve Değeri ile
Tablo'ya gidin

155

Spring Boot çeşitli yapılandırma haricilaştırma mekanizması sağladığından ( nesneye sırayla PropertySourcebağlı çeşitli uygulamalar ve / veya işlemciler aracılığıyla Environment), kavanoz arşivinizin dışındaki herhangi bir özelliği aşağıdaki yöntemlerle ayarlayabilirsiniz :

  1. Özelliği, uygulama bağımsız değişkeni olarak komut satırı bağımsız değişkeninden geçirme

    java -jar <path/to/my/jar> --server.port=7788
  2. İçinde özelliğinden SPRING_APPLICATION_JSON(Bahar Boot 1.3.0+)

    • U * IX kabuğunda ortam değişkenini tanımlayın:

      SPRING_APPLICATION_JSON='{"server.port":7788}' java -jar <path/to/my/jar>
    • Java sistem özelliğini kullanarak:

      java -Dspring.application.json='{"server.port":7788}' -jar <path/to/my/jar>
    • Komut satırı bağımsız değişkeninden geç:

      java -jar <path/to/my/jar> --spring.application.json='{"server.port":7788}'
  3. JVM sistem özelliğini tanımlama

    java -Dserver.port=7788 -jar <path/to/my/jar>
  4. İşletim sistemi ortam değişkenini tanımlayın

    • U * IX Kabuğu

      SERVER_PORT=7788 java -jar <path/to/my/jar>
    • pencereler

      SET SERVER_PORT=7788
      java -jar <path/to/my/jar>
  5. Özelliği ./config/application.properties yapılandırma dosyasına yerleştir

    server.port=7788

    ve koş:

     java -jar <path/to/my/jar>
  6. Mülkü şuraya yerleştir: ./config/application.yaml

    server:
        port: 7788

    ve koş:

     java -jar <path/to/my/jar>
  7. Mülkü şuraya yerleştir: ./application.properties

    server.port=7788

    ve koş:

     java -jar <path/to/my/jar>
  8. Mülkü şuraya yerleştir: ./application.yaml

    server:
        port: 7788

    ve koş:

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

Yukarıdaki yöntemleri bir araya getirebilirsiniz ve listedeki eski yapılandırma ikincisine göre önceliklidir.

Örneğin:

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

Sunucu başlayacak ve 7788 numaralı bağlantı noktasını dinleyecektir.

Bu özellik, PropertySources'da daha düşük önceliğe sahip (ve genellikle arşivde paketlenir veya kaynakta kodlanır) varsayılan özellikler sağlamak ve daha sonra çalışma zamanı ortamında geçersiz kılmak için kullanışlıdır. Ve Spring Boot'un tasarım felsefesidir:

Kutunun dışında düşünün, ancak gereksinimler varsayılanlardan sapmaya başladığında hızlı bir şekilde yoldan çıkın.


SERVER_NAMEiçin server.namedönüştürme ile yapıldı Rahat Cilt .


108

Ayrıca, bağlantı noktasını programlı olarak yapılandırabilirsiniz

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

Bu, kendi yapılandırma dosyanızda bağlantı noktası olduğunda ve çalışma zamanı sırasında ayarlamak istediğinizde işe yarar ve çok kullanışlıdır.
Xdg

4
Portu bir ortam değişkeninden almak için bir uygulamayı AWS Elastik Beanstalk servisine dağıtmak gerektiğinde bu yardımcı oldu.
Martin Hansen

Bu, istediğiniz tek bir bağımsız birim veya entegrasyon testi +1 olduğunda süper yararlıdır.
Priidu Neemre

Port için env değişkeni farklı bir ad altında tanımlanmışsa çok kullanışlıdır.
higuaro

2
Bunun @Configurationyerine değil @Controllermi? Lütfen öyleyse güncelleyin.
Şanslı

82

Bağlantı noktasını java kodunda ayarlayabilirsiniz:

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

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

Veya application.yml:

server:
    port: 9999

Veya uygulamada. Özellikler:

server.port=9999

Veya komut satırı parametresi olarak:

-Dserver.port=9999

HashMap'in kullanılması, yalnızca apps.properties veya .yml dosyasında herhangi bir port ayarlanmadığında çalışır.
Milgo

79

Yerel olarak çalıştırmak istiyorsanız bunu kullanın -

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

İtibariyle Bahar Boot 2.0 , burada komut olduğunu eserleri (ipuçları vardı burada ):

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

1
Spring Boot 2'den başlayarak kullanmalısınız spring-boot.run.jvmArguments.
mapm


47

Spring belgelerinde açıklandığı gibi , bunu yapmanın birkaç yolu vardır:

Bağlantı noktasını komut satırında ayarlarsınız (örneğin 8888)

-Dserver.port=8888 veya --server.port=8888

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

Veya bağlantı noktasını uygulamada ayarlarsınız.

server.port=${port:4588}

veya (application.yml dosyasında yaml sözdizimi ile)

server:
   port: ${port:4588}

-Dport (veya -Dserver.port) tarafından geçirilen bağlantı noktası komut satırında ayarlanırsa, bu bağlantı noktası dikkate alınır. Değilse, bağlantı noktası varsayılan olarak 4588 olacaktır.

Ortam değişkeni ne olursa olsun özellikler dosyasında bağlantı noktasını zorlamak istiyorsanız, şunu yazmanız yeterlidir:

server.port=8888


23

Programlı bir şekilde yapmanız gerektiğinde, başlatma sırasında ayarlayabilirsiniz:

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

Bu, ortama bağlı port gibi şeylere yardımcı olabilir. İyi günler


2
System.setProperty("server.port", 80);bunu başarmanın başka bir yoludur.
hd1

@ hd1, cevaplarımızı ana cevaba ekledim, kontrol edin ve istediğiniz gibi değiştirin lütfen
Luis Mauricio

18

EmbeddedServletContainerFactoryYapılandırmanızdaki çekirdeği geçersiz kılarak bağlantı noktasını belirtebilirsiniz (java tabanlı veya xml). Burada, kullanılmış gömülü sunucu uygulaması kapsayıcısı için bağlantı noktası belirtebilirsiniz. Lütfen Spring Boot - Core "Yerleşik Servlet Kabı Desteği" paragrafına ve oradaki örneğe bakın. Bu yardımcı olur umarım.



Programlı geçersiz kılma bölümüne şu anki bağlantı: docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/…
jocull


17

Diğer cevapları genişletmek için:

Test dokümanlarında, entegrasyon testlerinde bağlantı noktasının nasıl yapılandırılacağını açıklayan bir bölüm vardır:


Entegrasyon testlerinde, bağlantı noktası yapılandırması ek açıklama @SpringBootTestve webEnvironmentdeğerler kullanılarak yapılır .


Rastgele bağlantı noktası:

@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)

İle @LocalServerPortaynı olan değeri enjekte edebilirsiniz @Value("${local.server.port}").

  • Misal:

Rastgele bağlantı noktası test yapılandırması:

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

Tanımlı bağlantı noktası:

@SpringBootTest(webEnvironment=WebEnvironment.DEFINED_PORT)

Değeri server.portif tanımlı ise alır .

  • Eğer kullanılarak tanımlanırsa, tanımlanan @TestPropertySource(properties = "server.port=9192")diğer değerleri geçersiz kılar.
  • Değilse, değeri src/test/resources/application.properties(varsa) alır.
  • Ve son olarak, tanımlanmamışsa, varsayılan ile başlar 8080.

Misal:

Tanımlı bağlantı noktası test yapılandırması:

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

    @Test
    public void contextLoads() {
    }

}

17

Yay önyükleme uygulaması başladığında, Tomcat gibi katıştırılmış sunucu varsayılan bir bağlantı noktasıyla başlar. Gömülü tomcat varsayılan olarak 8080 bağlantı noktasıyla başlar. Varsayılan sunucu bağlantı noktasını değiştirmenin birçok yolu vardır.

Özellik Dosyasını Kullanma (.properties / .yml)

Özellik dosyasını kullanarak sunucu bağlantı noktasını değiştirmek için server.port özelliğini yapılandırmamız gerekir .

a. Sınıfyolunda src \ main \ resources \ application.properties gibi application.properties kullanma

server.port = 8585

Sunucu 8585 bağlantı noktasıyla başlayacaktır. Rasgele sunucu bağlantı noktası almak için özelliğe 0 atayın.

server.port = 0

Şimdi bahar önyükleme, sunucuyu şu anda sistemdeki herhangi bir sunucu tarafından kullanılmayan bir bağlantı noktasında başlatacaktır.

b. Src \ main \ resources \ application.yml gibi sınıfyolunda application.yml kullanma .

server:
  port: 8585 

Sunucu 8585 portu ile başlayacaktır.

Rastgele bağlantı noktası için 0 atayın.

server:
  port: 0 

Java Komutunu --server.port veya -Dserver.port ile kullanma

My-app.jar adında yürütülebilir bir JAR'ımız olduğunu varsayalım, ardından java komutunu kullanarak spring boot uygulamasını başlatırken argümanı aşağıdaki gibi kullanabiliriz.

--Server.port kullanma

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

-Dserver.port kullanma

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

Sunucu 8585 portu ile başlayacaktır.

Java Komutunu kısaca --port veya -Dport ile kullanma

Kısaca --server.port ve -Dserver.port yapmak için sunucu anahtar sözcüğünü kaldırabilir ve --port ve -Dport gibi herhangi bir kısa anahtar kelime yapabiliriz. Herhangi bir kısa anahtar kelimeyi kullanabiliriz. Burada port'u kısa anahtar kelime olarak kullanıyoruz. Bunu başarmak için özellik dosyasındaki yer tutucuyu aşağıdaki gibi yapılandırmamız gerekir.

Application.properties kullanma

server.port=${port:8282}

Application.yml kullanma

server:
   port: ${port:8282}

Bağlantı noktasını bağımsız değişken olarak geçmezsek, varsayılan olarak sunucu 8282 ile başlayacaktır. Farklı bir bağlantı noktası istiyorsak, istenen bağlantı noktasını bağımsız değişken olarak aşağıdaki gibi geçirmemiz gerekir. Diyelim ki my-app.jar adında yürütülebilir bir JAR'ımız var.

--Port kullanma

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

-Dport kullanma

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

Sunucu 8585 portu ile başlayacaktır.

SERVER_PORT'u SpringApplication ile Programlı Olarak Kullanma

SpringApplication, bahar önyükleme varsayılan özelliklerini değiştirmek için kullanılan setDefaultProperties () yöntemine sahiptir. Varsayılan bağlantı noktasını değiştirmek istediğimizi varsayalım, o zaman bir Harita oluşturmalı ve SERVER_PORT anahtarıyla bir bağlantı noktası koymalıyız. Örneği bulun.

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);
        }     
} 

Yaylı önyükleme, sunucuyu 8585 bağlantı noktasıyla başlatır.


17

Kullandığınız uygulama yapılandırma dosyasına bağlı olarak bunu yapmanın üç yolu vardır

a) application.properties dosya kümesini kullanıyorsanız

server.port = 8090

b) application.yml dosya kümesi sunucu bağlantı noktası özelliğini aşağıdaki gibi YAML biçiminde kullanıyorsanız

server:
     port: 8090

c) Ana yöntemde özelliği Sistem özelliği olarak da ayarlayabilirsiniz.

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

15

sınıflandırma aracı olarak gradle kullanıyorsanız, application.yml dosyanızdaki sunucu bağlantı noktasını şu şekilde ayarlayabilirsiniz :

server:
  port: 8291

Maven kullanıyorsanız, bağlantı noktası application.properties dosyanızda şu şekilde ayarlanabilir :

server.port: 8291

for application.properties onunserver.port = 8291
iQuestProgrammer


13
  1. Herkesin dediği gibi application.properties
    server.port = 9000'de (başka bir değer olabilir) belirtebilirsiniz.

  2. Projenizde yaylı aktüatör kullanıyorsanız, varsayılan olarak
    8080'i gösterir ve değiştirmek isterseniz, o zaman application.properties,
    management.port = 9001 (başka bir değer olabilir)


12

Bunu application.propertiesdosyanıza ekleyin

server.port= 8080

2
SO :-) 'ya Hoşgeldiniz Lütfen Nasıl Cevap
Verilir

Neden bir yıl sonra aynı asnwer eklemeliyim?!? ve server.port 8080Java özellik dosyası için yanlış sözdizimi ...
Betlista

12

Gelen application.propertiesdosyanın bu satırı ekleyin:

server.port = 65535

bu yer nereye yerleştirilir:

24.3 Uygulama Özellik Dosyaları

SpringApplication, application.properties dosyalarından özellikleri aşağıdaki konumlara yükler ve bunları Spring Ortamına ekler:

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

Liste önceliğe göre sıralanır (listede daha yüksek konumlarda tanımlanan özellikler, daha düşük konumlarda tanımlananları geçersiz kılar).

Benim durumumda jardosyanın bulunduğu dizine koydum .

Gönderen:

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


12

Varsayılan olarak, varsayılan önyükleme uygulaması, varsayılan tom 80 sunucusu başlangıç ​​noktası olan 8080 bağlantı noktasında başlar. Spring, aşağıdaki farklı özelleştirmeleri sağlar, bunlardan birini seçebilirsiniz.

NOT - kullanabilirsiniz server.port = 0 bahar önyükleme bizim için atanmamış herhangi bir http rastgele bağlantı noktası bulacaksınız.

1) uygulama özellikleri

server.port=2020

2) application.yml

server:  
     port : 2020

3) Sunucu bağlantı noktasını programlı olarak değiştirin

3.1) WebServerFactoryCustomizer arabirimini uygulayarak - 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 arabirimini uygulayarak - Bahar 1.x

@Component
public class CustomizationBean implements EmbeddedServletContainerCustomizer {

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

4) Komut satırı seçeneğini kullanarak

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

10

Gerçekten de, en kolay yol server.port özelliğini ayarlamaktır .

STE'yi IDE olarak kullanıyorsanız, 3.6.7 sürümünden itibaren özellikler dosyasını açmak için Spring Properties Editor'a sahipsiniz .

Bu düzenleyici tüm Bahar Önyükleme özellikleri için otomatik tamamlama sağlar. Eğer yazarsanız portu ve CTRL + BOŞLUK vurmak, server.port ilk seçenek olacaktır.


1
Veya Intellij IDEA kullanıyorsanız otomatik tamamlama da çalışır. ;)
Şanslı

9

Örneğin diğer yanıtlarda belirtildiği gibi property server.port = 8080 özelliğini kullanmak kesinlikle bir yoldur. Bir ortam özelliğini de açığa çıkarabileceğinizi belirtmek istedim:

SERVER_PORT=8080

Bahar önyükleme yerine "." son sürümlerde ortam değişkenleri için "_" ve daha düşük olan UPPER durumu için. Eğer yapmak gereken tek ekleme / düzenleme olmadan ortam değişkeni tanımlamak olduğu bu kaplarda, özellikle yararlı olan application.propertieskomut hattı üzerinden sistem özelliklerini veya geçen (örneğin -Dserver.port=$PORT)


SERVER_PORT=8081 mvn spring-boot:run
nobar

8

Umarım bu yardım eder

application.properties => 

server.port = 8090

application.yml => 

sunucu
  port: 8090

application.yml => sunucu: bağlantı noktası: 8090
geek

8

Application.properties dosyasında bağlantı noktası numarasının sağlanması sorunu çözecektir

 server.port = 8080

"bağlantı noktası, uygulamayı barındırmak istediğiniz yere bağlıdır"


7

Bağlantı noktasını aşağıdaki yöntemlerle ekleyebilirsiniz.

  1. Çalıştır -> Konfigürasyonlar bölümü

  2. Gelen application.xmleklentiserver.port=XXXX


1
Şunu mu demek istediniz application.ymlve hangi IDE'yi kullanıyorsunuz? Lütfen açık ol.
Şanslı

7

Application.properties içinde / src / main / resources / altında ayarlayabilirsiniz.

server.port = 8090

7

Sadece bir var application.propertiesiçinde src/main/resourcesprojenin ve orada vermek

server.port=****

burada ****bağlantı noktası numarasını ifade eder.


7

1.1 Bir özellikler dosyası üzerinden güncelleme.

/src/main/resources/application.properties

server.port = 8888

Bir yaml dosyası aracılığıyla güncelleyin.

   server:

     port: 8888

EmbeddedServletContainerCustomizer

@Component
public class CustomContainer implements EmbeddedServletContainerCustomizer {

    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) {

        container.setPort(8888);

    }

}

6

SERVER_PORTSpring Boot bağlantı noktasını yapılandırmak için ortam değişkenini de kullanabilirsiniz . Sadece ortam değişkenini ayarlayın ve uygulamayı yeniden başlatın:

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

Bu ortam değişkenlerini sistem çapında ayarlamazsanız, önyükleme uygulamasını aynı oturumda çalıştırmanız gerektiğini lütfen unutmayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.