Как настроить порт для приложения Spring Boot

Как настроить порт TCP/IP, прослушиваемый приложением Spring Boot, чтобы он не использовал порт по умолчанию 8080.

67 ответов

Решение

Как сказано в документации, либо установить server.port как системное свойство, используя параметр командной строки для jvm --server.port=8090 или добавить application.properties в /src/main/resources/ с

server.port = 8090

Для случайного использования порта

server.port=0

Существует два основных способа изменить порт во встроенном Tomcat в приложении Spring Boot.

Изменить application.properties

Сначала вы можете попробовать файл application.properties в папке /resources:

файл application.properties

Изменить вариант виртуальной машины

Во-вторых, если вы хотите избежать изменения каких-либо файлов и проверки того, что вам нужно только на локальном компьютере, вы можете использовать vm arg:

Перейти в "Выполнить" -> "Редактировать конфигурации" -> "Параметры виртуальной машины"

-Dserver.port=8090

Сменить порт с помощью vm arg

Кроме того, если вам нужна дополнительная информация, вы можете просмотреть следующее сообщение в блоге здесь: Изменение порта в приложении Spring Boot

Поскольку 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 Shell

      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 преобразование было сделано Relaxed Binding.

Также вы можете настроить порт программно

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

Если вы хотите запустить его локально, используйте это -

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

Начиная с Spring Boot 2.0, вот команда, которая работает (подсказки были здесь):

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

Вы можете установить порт в коде 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

Или в приложении. Свойства:

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

Или вы устанавливаете порт в приложении. Свойства

server.port=${port:4588}

или (в application.yml с синтаксисом yaml)

server:
   port: ${port:4588}

Если порт, переданный -Dport (или -Dserver.port), задан в командной строке, то этот порт будет учитываться. Если нет, то порт будет 4588 по умолчанию.

Если вы хотите использовать порт в файле свойств независимо от переменной среды, вам просто нужно написать:

server.port=8888

Включить ниже недвижимость в application.properties

server.port=8080

Когда вам нужен программный способ сделать это, вы можете установить его во время запуска:

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

Это может помочь для таких вещей, как зависящий от среды порт. Хорошего дня

По умолчанию приложения Spring Boot запускаются на встроенном Tomcat через порт 8080.

Чтобы изменить порт по умолчанию, вам просто нужно изменить атрибут server.port, который автоматически читается во время выполнения приложениями Spring Boot.

Вы можете изменить его следующими тремя способами:

  1. Определите server.port в application.properties, как показано ниже:
server.port=9090
  1. Определите server.port программно с помощью реализации интерфейса EmbeddedServletContainerCustomizer.

  2. Установите явно server.port при запуске приложения через командную строку следующим образом:

java -Dserver.port = 9090 -jar исполняемый файл.jar

java -jar executetable.jar –server.port=9090

Ознакомьтесь с подробным объяснением здесь: Как изменить порт по умолчанию для приложения Spring Boot

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

В 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 если определено.

  • Если определяется с помощью @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() {
    }

}

Если вы используете gradle в качестве инструмента сборки, вы можете установить порт сервера в файле application.yml как:

server:
  port: 8291

Если вы используете maven, то порт можно указать в файле application.properties как:

server.port: 8291

Есть три способа сделать это в зависимости от используемого файла конфигурации приложения.

  1. Если вы используете набор файлов application.properties

server.port = 8090 2. Если вы используете файл application.yml, задайте свойство порта сервера в формате YAML, как показано ниже

сервер: порт: 8090 3. Вы также можете установить свойство как системное свойство в основном методе

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

Когда запускается приложение весенней загрузки, встроенный сервер, такой как Tomcat, запускается с портом по умолчанию. Встроенный tomcat начинается с порта 8080 по умолчанию. Есть много способов изменить порт сервера по умолчанию.

Использование файла свойств (.properties/.yml)

Чтобы изменить порт сервера с помощью файла свойств, нам нужно настроить свойство server.port.

а. Использование application.properties в classpath, например, src\main\resources\application.properties

server.port = 8585

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

server.port = 0

Теперь весенняя загрузка запустит сервер на порту, который в настоящее время не используется ни одним сервером в системе.

б. Использование application.yml в classpath, например, src\main\resources\application.yml.

server:
  port: 8585 

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

Для случайного порта назначьте 0.

server:
  port: 0 

Использование команды java с --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-команды с --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.

Есть много других вещей, которые вы можете изменить в конфигурации сервера, изменив 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

По умолчанию приложение весенней загрузки запускается со встроенного сервера tomcat, запускается с порта 8080 по умолчанию. Spring предоставляет вам следующие различные настройки, вы можете выбрать один из них.

ПРИМЕЧАНИЕ. Вы можете использовать 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
  1. Как все говорили, вы можете указать в application.properties
    server.port = 9000 (может быть любым другим значением)

  2. Если вы используете пружинный привод в своем проекте, по умолчанию он указывает на
    8080, и если вы хотите изменить его, то в application.properties упомяните
    management.port = 9001 (может быть любым другим значением)

В 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/

По умолчанию spring-boot предоставляет встроенный сервер tomcat, который работает под номером порта 8080. Если вам нужно изменить номер порта приложения, перейдите в файл application.properties и настройте номер порта с помощью свойства server.port.

  server.port= 9876

тогда ваше приложение работает под портом 9876.

Действительно, самый простой способ - установить свойство server.port.

Если вы используете STS в качестве IDE, с версии 3.6.7 у вас фактически есть Spring Properties Editor для открытия файла свойств.

Этот редактор предоставляет автозаполнение для всех свойств Spring Boot. Если вы напишите порт и нажмете CTRL + SPACE, server.port будет первым вариантом.

Надеюсь, это поможет

application.properties=> 

server.port=8090

application.yml=> 

сервер
  порт:8090

Использование свойства server.port=8080, например, как упомянуто в других ответах, определенно является подходящим вариантом. Просто хотел упомянуть, что вы также можете выставить свойство среды:

SERVER_PORT=8080

Так как пружинный багажник способен заменить "." для "_" и ниже в верхнем регистре для переменных среды в последних версиях. Это особенно полезно в контейнерах, где все, что вам нужно сделать, это определить эту переменную среды без добавления / редактирования application.properties или передача системных свойств через командную строку (т.е. -Dserver.port=$PORT)

Просто есть application.properties в src/main/resources проекта и дать там

server.port=****

где **** относится к номеру порта.

Указание номера порта в файле application.properties решит проблему

 server.port = 8080

"порт зависит от вашего выбора, где вы хотите разместить приложение"

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

    }

}

Вы можете добавить порт следующими способами.

  1. Выполнить -> раздел Конфигурации

  2. В application.xml добавлять server.port=XXXX

Другие вопросы по тегам