Как изменить порт по умолчанию в Spring Boot

Как изменить порт по умолчанию в Spring Boot

1. Вступление

Spring Boot предоставляет разумные значения по умолчанию для многих свойств конфигурации. Тем не менее, нам иногда нужно настроить их с нашими значениями для конкретного случая.

Типичный вариант использования -changing the default port for the embedded server.

В этом кратком руководстве мы рассмотрим несколько способов добиться этого.

Дальнейшее чтение:

Свойства с Spring и Spring Boot

Учебное пособие по работе с файлами свойств и значениями свойств в Spring.

Read more

Spring Boot Изменить контекстный путь

Изучите различные способы изменения контекстного пути в приложении Spring Boot

Read more

2. Использование файлов свойств

Самый быстрый и простой способ настроить Spring Boot - переопределить значения свойств по умолчанию.

Для порта сервера свойство, которое мы хотим изменить, -server.port.

По умолчанию встроенный сервер запускается на порту 8080. Let’s see how we can provide a different value in an application.properties file:

server.port=8081

Теперь сервер запустится через порт 8081.

Точно так же мы можем сделать то же самое, если используем файлapplication.yml:

server:
  port : 8081

Оба файла загружаются автоматически Spring Boot, если они помещены в каталогsrc/main/resources приложения Maven.

2.1. Экологические порты

Если у нас есть приложение, развернутое в разных средах, мы можем захотеть, чтобы оно запускалось на разных портах в каждой системе.

Этого легко достичь, комбинируя подход к файлам свойств с профилями Spring. Specifically, we can create a property file for each environment.с

Например, у нас будет файлapplication-dev.properties с содержанием:

server.port=8081

Затем мы добавим еще один файлapplication-qa.properties с другим портом:

server.port=8082

Конфигурация файлов свойств должна быть достаточной для большинства случаев.

Однако есть и другие варианты для этой цели, так что давайте изучим и их.

3. Программная конфигурация

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

Во-первых, давайте посмотрим, как установить свойство в основном классе@SpringBootApplication:

@SpringBootApplication
public class CustomApplication {
    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(CustomApplication.class);
        app.setDefaultProperties(Collections
          .singletonMap("server.port", "8083"));
        app.run(args);
    }
}

Затем, чтобы настроить конфигурацию сервера, мы должны реализовать интерфейсWebServerFactoryCustomizer:

@Component
public class ServerPortCustomizer
  implements WebServerFactoryCustomizer {

    @Override
    public void customize(ConfigurableWebServerFactory factory) {
        factory.setPort(8086);
    }
}

Обратите внимание, что это относится к версии Spring Boot 2.x.

Для Spring Boot 1.x мы можем аналогичным образом реализовать интерфейсEmbeddedServletContainerCustomizer.

4. Использование аргументов командной строки

При упаковке и запуске нашего приложения как jar-файла мы можем установить аргументserver.port с помощью командыjava:

java -jar spring-5.jar --server.port=8083

Или используя эквивалентный синтаксис:

java -jar -Dserver.port=8083 spring-5.jar

5. Порядок оценки

В заключение давайте посмотрим на порядок, в котором эти подходы оцениваются Spring Boot.

В основном, приоритет конфигурации:

  • конфигурация встроенного сервера

  • аргументы командной строки

  • файлы свойств

  • основная конфигурация@SpringBootApplication

6. Заключение

В этом кратком руководстве мы увидели, как настроить порт сервера в приложении Spring Boot.

Исходный код примеров доступенover on GitHub.