Avatar ·

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

Всем привет! Я новичок в Spring Boot и пытаюсь запустить своё первое веб-приложение. По умолчанию оно запускается на порту 8080, но мне нужно изменить порт, например, на 9090, потому что порт 8080 уже занят другим сервисом. Я создал файл `application.properties` в папке `src/main/resources`, но ничего не происходит. Вот мой файл: ```java // application.properties server.port = 9090 ``` Я перезапускал приложение, но оно всё равно стартует на 8080. Что я делаю не так? Может, нужно добавить какие-то аннотации в главный класс? Или изменить структуру проекта? Также пробовал передавать порт через командную строку с помощью `--server.port=9090`, но это тоже не сработало. Ещё я заметил, что в логах пишется: "Tomcat started on port(s): 8080 (http)". При этом никаких ошибок нет. Использую Spring Boot 2.7.0, Maven, Java 11. Буду благодарен за подробное объяснение, как правильно изменить порт, и почему мой способ не работает. Заранее спасибо за помощь! <<>>

Почему ваш способ не работает?

Скорее всего, проблема в том, что файл application.properties находится не в той директории или имеет неправильное имя. Spring Boot автоматически подхватывает этот файл, только если он расположен в src/main/resources и называется точно application.properties (без лишних пробелов). Также обратите внимание на формат: после точки не должно быть пробелов.

Правильные способы настройки порта

1. Через application.properties (рекомендуемый способ)

Создайте файл src/main/resources/application.properties и добавьте:

server.port=9090

Важно: никаких пробелов вокруг знака "=". Перезапустите приложение — порт должен измениться.

2. Через application.yml (альтернативный формат)

Если предпочитаете YAML, создайте src/main/resources/application.yml:

server:
  port: 9090

3. Через переменные окружения

Можно задать порт при запуске:

export SERVER_PORT=9090
mvn spring-boot:run

На Windows:

set SERVER_PORT=9090
mvn spring-boot:run

4. Через аргументы командной строки

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

Или для JAR файла:

java -jar myapp.jar --server.port=9090

5. Программно через Java-код

В главном классе приложения:

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

Проверка работоспособности

После запуска проверьте логи: должно появиться сообщение:

Tomcat started on port(s): 9090 (http)

Перейдите в браузере на http://localhost:9090 — приложение должно отвечать.

Приоритет настроек (от высшего к низшему)

  • Аргументы командной строки
  • Переменные окружения
  • application.properties/yml вне JAR
  • application.properties/yml внутри JAR
  • Значения по умолчанию (8080)

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

Что делать, если порт всё ещё занят?

Если порт 8080 занят другим процессом (например, другим экземпляром приложения), Spring Boot выдаст ошибку. В этом случае:

  • Найдите процесс: netstat -ano | findstr :8080 (Windows) или lsof -i :8080 (Linux/Mac)
  • Убейте процесс или выберите другой порт
  • Либо задайте случайный порт: server.port=0 — приложение запустится на свободном порту (узнать его можно в логах)

Надеюсь, теперь всё заработает! Если остались вопросы — пишите в комментариях.

<<>>

Альтернативный подход: использование внешнего файла конфигурации

Если вы хотите менять порт без пересборки JAR, можно разместить application.properties рядом с JAR-файлом. Spring Boot сначала ищет файл в текущей директории, а затем внутри JAR. Пример структуры:

myapp/
├── myapp.jar
└── application.properties  # здесь server.port=9090

Затем запустите:

java -jar myapp.jar

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

Дополнительный совет: несколько профилей

Для разных окружений (dev, test, prod) создайте отдельные файлы:

  • application-dev.properties — server.port=8080
  • application-prod.properties — server.port=80

Запускайте с профилем:

java -jar myapp.jar --spring.profiles.active=prod

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