Spring Boot Изменить контекстный путь

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 использует для выбора эффективной конфигурации:

  1. Java Config

  2. Аргументы командной строки

  3. Свойства системы Java

  4. Переменные среды ОС

  5. application.properties в текущем каталоге

  6. application.properties в пути к классам (src/main/resources или упакованный файл jar)

5. Заключение

В этой статье мы быстро рассмотрели различные способы установки пути контекста или любого другого свойства конфигурации в приложении Spring Boot.