Как да промените порта по подразбиране в Spring Boot

1. Въведение

Spring Boot осигурява разумни настройки по подразбиране за много свойства на конфигурацията. И все пак, понякога трябва да ги персонализираме с конкретните ни стойности.

Често използван случай е промяната на порта по подразбиране за вградения сървър .

В този бърз урок ще разгледаме няколко начина за постигане на това.

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

Най-бързият и лесен начин за персонализиране на Spring Boot е чрез заместване на стойностите на свойствата по подразбиране.

За сървърния порт свойството, което искаме да променим, е server.port .

По подразбиране вграденият сървър се стартира на порт 8080. Нека видим как можем да предоставим различна стойност във файл application.properties :

server.port=8081

Сега сървърът ще стартира на порт 8081.

По същия начин можем да направим същото, ако използваме файл application.yml :

server: port : 8081

И двата файла се зареждат автоматично от Spring Boot, ако са поставени в директорията src / main / resources на приложение на Maven.

2.1. Пристанища, специфични за околната среда

Ако имаме приложение, което е внедрено в различни среди, може да искаме то да се изпълнява на различни портове на всяка система.

Лесно можем да постигнем това, като комбинираме подхода на файловете с свойства с Spring профили. По-конкретно, можем да създадем файл със свойства за всяка среда.

Например ще имаме файл 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. Използване на аргументи от командния ред

Когато опаковаме и стартираме нашето приложение като буркан, можем да зададем аргумента server.port с командата java :

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

Или чрез използване на еквивалентния синтаксис:

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

5. Ред за оценка

Като финална бележка, нека разгледаме реда, в който тези подходи се оценяват от Spring Boot.

По принцип приоритетът на конфигурациите е:

  • конфигурация на вграден сървър
  • аргументи от командния ред
  • файлове с имоти
  • main @SpringBootApplication конфигурация

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

В този бърз урок видяхме как да конфигурираме порта на сървъра в приложение за Spring Boot.

Изходният код за примерите е достъпен в GitHub.