Как настроить порт для Spring Boot приложения в application.properties
Почему ваш способ не работает?
Скорее всего, проблема в том, что файл 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=8080application-prod.properties—server.port=80
Запускайте с профилем:
java -jar myapp.jar --spring.profiles.active=prod
Это позволяет гибко управлять портами и другими настройками.
Ответов пока нет.
Войдите чтобы оставить ответ
Блоги