Spring Boot Изменить контекстный путь
1. обзор
Spring Boot, by default,serves content on the root context path (“/”).
И хотя обычно предпочтение отдается соглашению, а не конфигурации, бывают случаи, когда нам действительно нужен собственный путь.
В этом кратком руководстве мы рассмотрим различные способы его настройки.
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=/example
Вместо того, чтобы помещать файл свойств вsrc/main/resources, мы также можем сохранить его в текущем рабочем каталоге (вне пути к классам).
2.2. Системное свойство Java
Мы также можем установить путь к контексту как системное свойство Java еще до инициализации контекста:
public static void main(String[] args) {
System.setProperty("server.servlet.context-path", "/example");
SpringApplication.run(Application.class, args);
}
2.3. Переменная среды ОС
Spring Boot также может полагаться на переменные среды ОС. На Unix-системах мы можем написать:
$ export SERVER_SERVLET_CONTEXT_PATH=/example
В Windows команда для установки переменной среды:
> set SERVER_SERVLET_CONTEXT_PATH=/example
above environment variable is for Spring Boot 2.x.x,If we have 1.x.x, переменнаяSERVER_CONTEXT_PATH.
2.4. Аргументы командной строки
Мы также можем установить свойства динамически с помощью аргументов командной строки:
$ java -jar app.jar --server.servlet.context-path=/example
3. Использование Java Config
Теперь давайте установим путь контекста, заполнив фабрику компонентов конфигурационным компонентом.
В Spring Boot 2 мы можем использоватьWebServerFactoryCustomizer:
@Bean
public WebServerFactoryCustomizer
webServerFactoryCustomizer() {
return factory -> factory.setContextPath("/example");
}
С помощью Spring Boot 1 мы можем создать экземплярEmbeddedServletContainerCustomizer:
@Bean
public EmbeddedServletContainerCustomizer
embeddedServletContainerCustomizer() {
return container -> container.setContextPath("/example");
}
4. Приоритетный порядок конфигураций
С таким большим количеством опций мы можем получить более одной конфигурации для одного и того же свойства.
Вотpriority order in descending order,, которые Spring Boot использует для выбора эффективной конфигурации:
-
Java Config
-
Аргументы командной строки
-
Свойства системы Java
-
Переменные среды ОС
-
application.properties в текущем каталоге
-
application.properties в пути к классам (src/main/resources или упакованный файл jar)
5. Заключение
В этой статье мы быстро рассмотрели различные способы установки пути контекста или любого другого свойства конфигурации в приложении Spring Boot.