Як налаштувати порт для програми Spring Boot


796

Як налаштувати TCP / IP-порт, прослуховуваний програмою Spring Boot, щоб він не використовував порт 8080 за замовчуванням.


5
Якщо хто - то цікаво, тут показано , як мати кілька портів - stackoverflow.com/questions/36357135 / ...
Betlista

якщо ви використовуєте файл "yml" для конфігурації, ви можете використовувати цей сервер: port: 8081 Також анотуйте ваш основний клас як "@SpringBootApplication" та видаліть @ EnableAutoConfiguration
Keaz

ваш проект [application.properties] для додавання сервера.port = 8080
Lahiru Samishka

встановити server.port=8080у властивості програми. ця конфігурація знаходиться в ServerProperties.classкласі під org.springframework.boot.autoconfigure.web.
Атиф

Відповіді:


1226

Як сказано в документації або встановленої server.portв системі власності з допомогою опції командного рядка для віртуальної машини Java -Dserver.port=8090або додати application.propertiesв /src/main/resources/с

server.port=8090

Для випадкового використання портів

server.port=0

47
Якщо використовується випадковий порт, інформація про порт може отримати@Value("${local.server.port}")
azizunsal

42
Насправді опцією командного рядка є --server.port = 8090, не -Dserver.port = 8090. docs.spring.io/spring-boot/docs/current/reference/html/…
Opster ES Ninja - Альпер

1
Як комплімент до цієї відповіді: Відповідно до весняних документів, існують інші шляхи, які можна прокласти application.properties. У моєму випадку це дуже допомогло.
саргаз

14
-Dserver.port = XXXX не працював для мене. Я використовував змінний режим середовища ОС: $ 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властивість системи, а друга команда передає властивість через аргументи командного рядка ( String... argsу mainметоді). Більше того, якщо ви працюєте з java -Dserver.port=XXXX -jar <path/to/my/jar> --server.port=YYYY, YYYYмає перевагу над XXXXцим, тому зовнішня конфігурація Spring Boot настільки чарівна.
tan9

209

Є два основні способи змінити порт у вбудованому Tomcat у програмі Spring Boot.

Змініть application.properties

Спочатку ви можете спробувати файл application.properties у папці / ресурси:

server.port = 8090

файл application.properties

Змініть параметр VM

Другий спосіб, якщо ви хочете уникнути зміни будь-яких файлів і перевірки чогось, що вам потрібно лише у вашому локальному, ви можете використовувати аргумент vm:

Перейдіть до пункту Виконати -> Редагувати конфігурації -> Параметри VM

-Dserver.port=8090

Змінити порт з аргументом vm

Крім того, якщо вам потрібна додаткова інформація, ви можете переглянути тут наступну публікацію блогу: Зміна порту програми Spring Boot


У STS 4 він запущений -> конфігурації запуску -> основний, потім прокрутіть униз до таблиці з назвою та значенням параметра
серв.

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. Визначення змінної середовища ОС

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

Це дуже корисно, якщо властивості за замовчуванням у PropertySources мають нижчий пріоритет (і зазвичай упаковані в архіві або закодовані у джерелі), а потім переосмислюють їх у середовищі виконання. І це філософія дизайну Spring Boot:

Будьте впевнені у вікні, але швидко виходьте з шляху, оскільки вимоги починають відходити від значень за замовчуванням.


SERVER_NAMEдо server.nameперетворення здійснювалося розслаблене в'яжуче .


108

також ви можете налаштувати порт програмно

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

Це працює і дуже корисно, коли у вас є порт у вашому власному конфігураційному файлі та хочете встановити його під час виконання.
Xdg

4
Це було корисно, коли мені потрібно було розгорнути додаток до служби AWS Elastic Beanstalk, щоб отримати порт із змінної середовища.
Мартін Хансен

Це дуже корисно, коли все, що вам потрібно, це автономний блок або тест на інтеграцію, +1.
Priidu Neemre

Дуже корисно, коли змінна env для порту вже визначена під іншим іменем.
higuaro

2
Хіба це не @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 буде працювати лише в тому випадку, якщо в application.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

54

Якщо ви використовуєте, application.ymlдодайте до нього наступні рядки

server:
     port: 9000

і звичайно 0 для випадкового порту.


1
це, здається, не спрацювало. Я використовував server.port у application.yml, і він працював
yathirigan

47

Як пояснено у весняній документації , існує кілька способів зробити це:

Або встановіть порт у командному рядку (наприклад, 8888)

-Dserver.port=8888 або --server.port=8888

Приклад: java -jar -Dserver.port=8888 test.jar

Або ви встановлюєте порт у application.properties

server.port=${port:4588}

або (у application.yml із синтаксисом yaml)

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, я додав наші відповіді до головної відповіді, перевіримо її та змінимо, як вам подобається,
Луїс Маурісіо

18

Ви можете вказати порт за допомогою перекреслення EmbeddedServletContainerFactoryбіна в межах своєї конфігурації (на базі Java або XML). Там ви можете вказати порт для вживаного контейнера сервлетів. Будь ласка, дивіться розділ Spring Boot - Core "Підтримка вбудованої серветки" та приклад. Сподіваюсь, це допомагає.



Ось поточне посилання на розділ програмного перегляду: docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/…
jocull


17

Щоб розширити інші відповіді:

В документах є розділ для тестування, який пояснює, як налаштувати порт на інтеграційних тестах:


При тестах інтеграції конфігурація порту робиться за допомогою анотації @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якщо воно визначене.

  • Якщо визначено за допомогою @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 .

а. Використання application.properties на класному шляху, наприклад, src \ main \ ресурси \ application.properties

server.port = 8585

Сервер запуститься з 8585 порту. Щоб отримати випадковий порт сервера, призначте 0 властивості.

server.port = 0

Тепер весняне завантаження запустить сервер на порт, який наразі не використовується жодним сервером системи.

б. Використання application.yml у класному шляху, наприклад, src \ main \ ресурси \ application.yml.

server:
  port: 8585 

Сервер запуститься з 8585 порту.

Для випадкового порту призначте 0.

server:
  port: 0 

Використання java Command за допомогою --server.port або -Dserver.port

Припустимо, у нас є виконуваний файл JAR з назвою my-app.jar, тоді, починаючи весняний завантажувальний додаток за допомогою команди java, ми можемо використовувати аргумент наступним чином.

Використовуючи --server.port

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

Використовуючи -Dserver.port

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

Сервер запуститься з 8585 порту.

Використання java Command з --port або -Dport коротко

Якщо коротко зробити --server.port і -Dserver.port, ми можемо видалити серверне ключове слово та зробити його будь-яким коротким ключовим словом, таким як --port та -Dport. Ми можемо використовувати будь-яке коротке ключове слово. Тут ми використовуємо порт як коротке ключове слово. Для цього нам потрібно налаштувати заповнювач у файл властивостей наступним чином.

Використання application.properties

server.port=${port:8282}

Використання application.yml

server:
   port: ${port:8282}

Якщо ми не передаємо порт як аргумент, то сервер за замовчуванням почнеться з 8282. Якщо ми хочемо інший порт, тоді нам потрібно передати потрібний порт в аргументі наступним чином. Припустимо, у нас є виконуваний файл JAR з іменем my-app.jar.

Використовуючи --port

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

Використання -Dport

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

Сервер запуститься з 8585 порту.

Використання SERVER_PORT з SpringApplication програмно

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

Існує три способи зробити це залежно від файлу конфігурації програми, який ви використовуєте

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, порт можна встановити у вашому файлі application.properties таким чином:

server.port: 8291

для application.properties йогоserver.port = 8291
iQuestProgrammer

14

Є багато інших елементів, які ви можете змінити в налаштуваннях сервера, змінивши 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

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 у порту за замовчуванням 8080. Весна надає вам наступні різні налаштування, ви можете вибрати одну з них.

ПРИМІТКА - ви можете використовувати server.port = 0 весняний завантажувач знайде для нас будь-який непризначений http випадковий порт.

1) застосування.властивості

server.port=2020

2) application.yml

server:  
     port : 2020

3) Змініть порт сервера програмно

3.1) Реалізуючи інтерфейс WebServerFactoryCustomizer - Весна 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 - Весна 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 Properties для відкриття файлу властивостей.

Цей редактор надає автозаповнення для всіх властивостей Spring Boot. Якщо ви пишете порт і натискаєте CTRL + SPACE, першим варіантом буде server.port .


1
Або також якщо ви використовуєте Intellij IDEA, автозаповнення також працює. ;)
Лаки

9

Наприклад, використовуючи властивість server.port = 8080, як, наприклад, зазначено в інших відповідях, безумовно, це шлях. Просто хотілося б зазначити, що ви також можете відкрити властивість навколишнього середовища:

SERVER_PORT=8080

Оскільки весняний черевик здатний замінити "". для "_" та нижчого до випадку UPPER для змінних середовищ в останніх версіях. Це особливо корисно в контейнерах, де все, що вам потрібно зробити, це визначити цю змінну середовища без додавання / редагування 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

Ви можете встановити це у application.properties під / src / main / ресурси /

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

Зауважте, що якщо ви не встановите ці системи змінних середовища широко, ви повинні запустити додаток для завантаження на одному сеансі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.