Как настроить порт TCP / IP, прослушиваемый приложением Spring Boot, чтобы он не использовал порт по умолчанию 8080.
Как настроить порт для приложения Spring Boot
Ответы (56)
Как указано в документации a> либо установите server.port
как системное свойство, используя параметр командной строки для jvm -Dserver.port=8090
, либо добавьте application.properties
в /src/main/resources/
с помощью
server.port=8090
Для случайного использования порта
server.port=0
Аналогичным образом добавьте application.yml
в /src/main/resources/
с
server:
port : 8090
@Value("${local.server.port}")
- person azizunsal; 23.07.2015
application.properties
. В моем случае это очень помогло.
- person sargas; 02.10.2015
$ SERVER_PORT=8090 java -jar <path/to/my/jar>
- person Soumya Kanti; 08.10.2015
java -jar <my.jar> --server.port=8090
работает весной 1.4.0
- person rzymek; 13.09.2016
java -Dserver.port=XXXX -jar <path/to/my/jar>
и (2) java -jar <path/to/my/jar> --server.port=YYYY
работают. Первая команда определяет server.port
системное свойство, а вторая команда передает свойство через аргументы командной строки (String... args
в методе main
). Более того, если вы работаете с java -Dserver.port=XXXX -jar <path/to/my/jar> --server.port=YYYY
, YYYY
имеет приоритет над XXXX
, поэтому внешняя конфигурация Spring Boot так очаровательна.
- person tan9; 29.11.2016
mvn spring-boot:run -Dserver.port=8888
- person old-monk; 12.04.2018
Есть два основных способа изменить порт во встроенном Tomcat в приложении Spring Boot.
Измените application.properties
Сначала вы можете попробовать файл application.properties в папке / resources:
server.port = 8090
Измените параметр ВМ
Второй способ, если вы не хотите изменять какие-либо файлы и не проверять то, что вам нужно только на вашем локальном компьютере, вы можете использовать vm arg:
Перейти к выполнению -> Изменить конфигурации -> Параметры виртуальной машины
-Dserver.port=8090
Кроме того, если вам нужна дополнительная информация, вы можете просмотреть следующую запись в блоге здесь: Изменение порта в приложении Spring Boot
Поскольку Spring Boot предоставляет различные механизмы экстернализации конфигурации (с помощью различных PropertySource
реализаций и / или процессоров, подключенных к Environment
объекту по порядку), вы можете установить любое свойство вне вашего jar-архива с помощью следующих методов :
Передайте свойство через аргумент командной строки как аргумент приложения
java -jar <path/to/my/jar> --server.port=7788
Из свойства в
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}'
Определите системное свойство JVM
java -Dserver.port=7788 -jar <path/to/my/jar>
Определите переменную среды ОС
Оболочка U * IX
SERVER_PORT=7788 java -jar <path/to/my/jar>
Окна
SET SERVER_PORT=7788 java -jar <path/to/my/jar>
Поместите свойство в
./config/application.properties
файл конфигурацииserver.port=7788
и запустите:
java -jar <path/to/my/jar>
Поместить недвижимость в
./config/application.yaml
server: port: 7788
и запустите:
java -jar <path/to/my/jar>
Поместить недвижимость в
./application.properties
server.port=7788
и запустите:
java -jar <path/to/my/jar>
Поместить недвижимость в
./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.
Также вы можете настроить порт программно.
Для Spring Boot 2.x.x:
@Configuration
public class CustomContainer implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
public void customize(ConfigurableServletWebServerFactory factory){
factory.setPort(8042);
}
}
Для более старых версий:
@Configuration
public class ServletConfig {
@Bean
public EmbeddedServletContainerCustomizer containerCustomizer() {
return (container -> {
container.setPort(8012);
});
}
}
@Configuration
вместо @Controller
? Пожалуйста, обновите, если это так.
- person Lucky; 13.09.2016
@Configuration
, но если вы импортируете его с помощью @Import
, он работает, не уверен, работает ли он с автоматическим поиском конфигурации.
- person kap; 23.03.2017
PortConfiguration.java
в папке пакета и вставил этот код сюда. Однако я получаю сообщение об ошибке из кода VS: конфигурация не может быть преобразована в тип. Какие-либо предложения?
- person PeMa; 02.03.2018
Вы можете установить порт в 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
Или в application.properties:
server.port=9999
Или как параметр командной строки:
-Dserver.port=9999
Если вы хотите запустить его локально, используйте это -
mvn spring-boot:run -Drun.jvmArguments='-Dserver.port=8085'
Начиная с Spring Boot 2.0, вот команда, которая работает (подсказки были здесь):
mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8085
spring-boot.run.jvmArguments
.
- person mapm; 12.04.2018
Если вы используете application.yml
, добавьте к нему следующие строки
server:
port: 9000
и, конечно же, 0 для случайного порта.
Как объясняется в Документация Spring, есть несколько способов сделать это:
Либо вы устанавливаете порт в командной строке (например 8888)
-Dserver.port=8888
or --server.port=8888
Пример: java -jar -Dserver.port=8888 test.jar
Или вы устанавливаете порт в application.properties
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);
Это может помочь для таких вещей, как порт, зависящий от среды. Хорошего дня
System.setProperty("server.port", 80);
- еще один способ добиться того же.
- person hd1; 11.02.2017
Вы можете указать порт, переопределив bean-компонент 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
server.port = 8291
- person iQuestProgrammer; 05.12.2019
Это можно сделать тремя способами, в зависимости от используемого файла конфигурации приложения.
а) Если вы используете набор файлов application.properties
server.port = 8090
б) Если вы используете файл application.yml, установите свойство порта сервера в формате YAML, как указано ниже.
server:
port: 8090
c) Вы также можете установить это свойство как системное свойство в основном методе.
System.setProperty("server.port","8090");
Есть много других вещей, которые вы можете изменить в конфигурации сервера, изменив application.properties. Как время ожидания сеанса, адрес и порт и т. Д. См. Сообщение ниже
ref: 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 = 9000 (может быть любое другое значение)Если вы используете в своем проекте пружинный привод, по умолчанию он указывает на
8080, и если вы хотите его изменить, то в application.properties укажите
management.port = 9001 ( может быть любое другое значение)
Добавьте это в свой application.properties
файл
server.port= 8080
server.port 8080
неверный синтаксис для файла свойств Java ...
- person Betlista; 08.02.2018
В файле 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
.
Из:
По умолчанию приложение для загрузки Spring запускается со встроенным сервером 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
По умолчанию модуль spring-web предоставляет встроенный сервер 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 будет первым вариантом.
Использование свойства server.port = 8080, например, как упоминалось в других ответах, определенно подходит. Просто хотел упомянуть, что вы также можете предоставить свойство среды:
SERVER_PORT=8080
Так как пружинный пыльник может заменить "." для "_" и ниже до ВЕРХНЕГО регистра для переменных среды в последних версиях. Это особенно полезно в контейнерах, где все, что вам нужно сделать, это определить эту переменную среды без добавления / редактирования application.properties
или передачи системных свойств через командную строку (например, -Dserver.port=$PORT
)
Надеюсь, это поможет
application.properties=> server.port=8090 application.yml=> server port:8090
Если указать номер порта в файле application.properties, проблема будет решена.
server.port = 8080
"порт зависит от вашего выбора, где вы хотите разместить приложение"
Вы можете добавить порт следующими способами.
Выполнить -> Раздел "Конфигурации"
В
application.xml
добавитьserver.port=XXXX
application.yml
и какую IDE вы используете? Пожалуйста, будьте конкретны.
- person Lucky; 13.09.2016
Вы можете установить это в application.properties в / src / main / resources /
server.port = 8090
Просто внесите application.properties
в src/main/resources
проекта и дайте там
server.port=****
где ****
относится к номеру порта.
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);
}
}
Вы также можете использовать переменную среды SERVER_PORT
для настройки порта загрузки Spring. Просто установите переменную среды и перезапустите приложение:
set SERVER_PORT=9999 // on windows machine
export SERVER_PORT=9999 // on linux
Обратите внимание, что если вы не устанавливаете эти переменные среды для всей системы, вам следует запустить загрузочное приложение в том же сеансе.
В основном springboot работает на port:8080
из-за встроенного Tomcat. В некоторых может выдать ошибку port 8080 already in use
. Чтобы избежать подобных проблем, мы можем настроить порт сервера.
Использование application.properties
добавить server.port=9898
В конфигурации времени выполнения
запустите приложение с указанными ниже аргументами.
spring-boot:run -Drun.jvmArguments='-Dserver.port=8081'
Вы можете настроить свой порт в файле application.properties в папке ресурсов вашего проекта весенней загрузки.
server.port="port which you need"
Просто установите переменную среды SERVER_PORT
.
(Примеры работают на Linux
)
Начать через java -jar:
SERVER_PORT=9093 java -jar target/eric-sc-dummy.jar
Запустите через плагин maven spring -boot:
SERVER_PORT=9093 mvn spring-boot:run
Подсказки:
- Если вы добавляете другие подкоманды перед командой
java -jar
илиmvn
, тогда вам нужно добавитьexport
, чтобы установить env в отдельной команде, и разделить их через;
, чтобы убедиться, что он доступен для подпроцесса.
например:
export SERVER_PORT=9093; export MAVEN_OPTS="-Xmx256m -Xms64m"; mvn spring-boot:run
"server.port = 8080" будет работать, только если ваше приложение запущено как jar через основной метод,
Эта конфигурация не будет работать, если вы запустите это приложение как военный файл через контейнер Tomcat.
Если вы собираетесь запускать приложения как файл jar в командной среде, просто введите «SERVER_PORT = ***» в качестве префикса. Полная команда для выполнения будет выглядеть, как показано ниже:
SERVER_PORT=8080 java -jar ***.jar
Если вы хотите запустить приложение в Linux в фоновом режиме, команда с nohup будет выглядеть так:
SERVER_PORT=8080 nohup java -jar ***.jar &
Есть три способа сделать это
1 Установите свойство server.port в application.properties
файле
server.port = 8090
2 Установите свойство порта сервера в application.yml
файле
server:
port: 8090
3 Установите свойство как системное свойство в main
методе
System.setProperty("server.port","8090");
Помимо всех ответов, я хотел бы указать, что в большинстве IDE (IntelliJ с плагином Spring, STS) есть функция, в которой предлагаются все ключи конфигурации, поддерживаемые SpringBoot. (т.е. все самоуверенные ключевые слова конфигурации)
Серверный порт объявляют в двух типах
1. статический тип
server.port=8080. // your port number
Динамический тип
server.port=0. // randomly generate port number. server.port=${PORT:0}
По умолчанию модуль Spring-web предоставляет встроенный сервер tomcat, работающий на порту 8080.
Вы можете изменить его следующим образом -
A) Если вы используете gradle, используйте свойство, которое можно установить в вашем application.yml:
server:
port: 8042
Б) Если вы используете maven, вы можете установить свойство в своем application.properties:
server.port: 8042
C) Когда у вас есть порт в вашем собственном файле конфигурации и вы хотите установить его во время выполнения.
Путем реализации интерфейса WebServerFactoryCustomizer - Spring 2.x
@Component
public class MyTomcatWebServerCustomizer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
@Override
public void customize(TomcatServletWebServerFactory factory) {
// customize the factory here
factory.setPort(8042);
}
}
Путем реализации интерфейса EmbeddedServletContainerCustomizer - Spring 1.x
@Component
public class CustomizationBean implements EmbeddedServletContainerCustomizer {
@Override
public void customize(ConfigurableEmbeddedServletContainer container) {
// customize here
container.setPort(8042);
}
}
Порт по умолчанию: 8080, но мы можем настроить номер порта в application.properties, как показано ниже.
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
server.port = 5050 -- #here we can give any port number.
Этот вопрос является первым результатом при поиске в Google Gradle Spring Port.
Если вы используете gradle, вы можете сделать что-то вроде этого, если у вас уже применен плагин Spring Boot Gradle:
bootRun {
args += ["--server.port=[PORT]"]
}
Более подробный ответ см. В моем ответе здесь.
Если вы работаете над загрузочными проектами и хотите настроить порт, вы можете указать ввод в файле application.properties, например ПРИМЕЧАНИЕ: файл свойств должен находиться в src / main / resource.
Свойства пружины
server.port = 9999. Если вы используете CMD, выполните следующую команду: -Dserver.port = 9999. Для порта по умолчанию используется его server.port = 0. Убедитесь, что этот порт не используется. номер порта
Подобно https://stackoverflow.com/a/36865796/1587329 и https://stackoverflow.com/a/40799750/1587329, однострочник gradle будет
SERVER_PORT=9090 gradle bootRun
В свойствах приложения просто добавьте 1 строку
server.port = 8090
Программно, с пружинным чехлом 2.1.5:
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
import org.springframework.stereotype.Component;
@Component
public class CustomizationBean implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> {
@Override
public void customize(ConfigurableServletWebServerFactory server) {
server.setPort(9000);
}
}
Используя командную строку оболочки mvn, spring-boot 2:
mvn spring-boot:run -Dspring-boot.run.jvmArguments='-Dserver.port=8085'
Это сработало для меня:
Добавлен собственный класс контейнера:
@Component
public class CustomContainer implements EmbeddedServletContainerCustomizer {
@Override
public void customize(ConfigurableEmbeddedServletContainer configurableEmbeddedServletContainer) {
configurableEmbeddedServletContainer.setPort(8888);
}
}
Но он все еще не использовал порт 8888.
Затем я устанавливаю свойство scanBasePackages, подобное этому, в классе «@SpringBootApplication» в моем основном методе: (scanBasePackages = {"custom container package"})
@SpringBootApplication(scanBasePackages = {"com.javabrains.util"})
public class CourseApiApp {
public static void main (String args []) {
SpringApplication.run(CourseApiApp.class, args);
}
}
И он начал собирать набор портов в Custom Container.
При весенней загрузке вы можете легко настроить порт доступа к сервису в application.properties
файле.
server.port=portnumber
если вы не укажете порт специально, он попытается открыть службу с портом 80
. в случае, если он уже используется, сервис не будет запущен на встроенном контейнере.
если ваш номер порта может быть случайным, вы можете использовать случайную функцию в своем application.properties
server.port=${random.int(4)}
server.port = 0
для случайного порта
server.port
= 8080 для пользовательского порта 8080
в файле application.properties добавьте следующее: server.port = 8888 НЕОБХОДИМАЯ ЗАЩИТА ВСЕГДА УКАЗАНО ЗДЕСЬ
Настройте сведения о порте в файле конфигурации или в свойствах приложения.
e.g.
port =8876
Если вы используете интерфейс командной строки (CLI) Spring, используйте --
для отделения команд от аргументов команды spring
, чтобы изменить порт:
spring run hello.groovy -- --server.port=9000
В моем случае добавление заявления
server.port=${port:8081}
переопределить порт сервера Tomcat по умолчанию.
server.port=8080
в свойствах приложения. эта конфигурация находится вServerProperties.class
классе подorg.springframework.boot.autoconfigure.web
. - person Atif   schedule 11.03.2020