Як налаштувати порт для програми 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.