1. Обзор
Spring Boot по умолчанию обслуживает содержимое по пути корневого контекста («/») .
Хотя обычно рекомендуется предпочесть соглашение конфигурации, бывают случаи, когда мы хотим иметь собственный путь.
В этом кратком руководстве мы рассмотрим различные способы его настройки.
2. Установка свойства
Как и многие другие параметры конфигурации, контекстный путь в Spring Boot можно изменить, установив свойство server.servlet.context-path
.
Обратите внимание, что это работает для Spring Boot 2.x. Для Boot 1.x это свойство server.context-path
.
Существует несколько способов установки этого свойства, поэтому давайте рассмотрим их один за другим.
2.1. Использование application.properties/yml
``
Самый простой способ изменить контекстный путь — установить свойство в файле
application.properties/yml
: ``
server.servlet.context-path=/foreach
Вместо того, чтобы помещать файл свойств в src/main/resources
, мы также можем хранить его в текущем рабочем каталоге (вне пути к классам).
2.2. Системное свойство Java
Мы также можем установить контекстный путь как системное свойство Java еще до того, как контекст будет инициализирован:
public static void main(String[] args) {
System.setProperty("server.servlet.context-path", "/foreach");
SpringApplication.run(Application.class, args);
}
2.3. Переменная среды ОС
Spring Boot также может полагаться на переменные среды ОС. В системах на базе Unix мы можем написать:
$ export SERVER_SERVLET_CONTEXT_PATH=/foreach
В Windows команда для установки переменной среды:
> set SERVER_SERVLET_CONTEXT_PATH=/foreach
Приведенная выше переменная среды предназначена для Spring Boot 2.xx. Если у нас есть 1.xx , переменная — SERVER_CONTEXT_PATH
.
2.4. Аргументы командной строки
Мы также можем установить свойства динамически с помощью аргументов командной строки:
$ java -jar app.jar --server.servlet.context-path=/foreach
3. Использование конфигурации Java
Теперь давайте установим контекстный путь, заполнив фабрику компонентов конфигурационным компонентом.
С Spring Boot 2 мы можем использовать WebServerFactoryCustomizer
:
@Bean
public WebServerFactoryCustomizer<ConfigurableServletWebServerFactory>
webServerFactoryCustomizer() {
return factory -> factory.setContextPath("/foreach");
}
С Spring Boot 1 мы можем создать экземпляр EmbeddedServletContainerCustomizer
:
@Bean
public EmbeddedServletContainerCustomizer
embeddedServletContainerCustomizer() {
return container -> container.setContextPath("/foreach");
}
4. Приоритетный порядок конфигураций
С таким количеством опций у нас может быть более одной конфигурации для одного и того же свойства.
Вот порядок приоритета в порядке убывания, который Spring Boot использует для выбора эффективной конфигурации:
- Конфигурация Java
- Аргументы командной строки
- Свойства системы Java
- Переменные среды ОС
application.properties
в текущем каталогеapplication.properties
в пути к классам (src/main/resources
или упакованный файл jar)
5. Вывод
В этой краткой статье мы рассмотрели различные способы установки контекстного пути или любого другого свойства конфигурации в приложении Spring Boot.