«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=/baeldung

Вместо того, чтобы помещать файл свойств в src/main/resources , мы также можем оставить его в текущем рабочем каталоге (вне пути к классам).

2.2. Системное свойство Java

Мы также можем установить путь к контексту как системное свойство Java еще до инициализации контекста:

public static void main(String[] args) {
    System.setProperty("server.servlet.context-path", "/baeldung");
    SpringApplication.run(Application.class, args);
}

2.3. Переменная среды ОС

Spring Boot также может полагаться на переменные среды ОС. В системах на базе Unix мы можем написать:

$ export SERVER_SERVLET_CONTEXT_PATH=/baeldung

В Windows команда для установки переменной среды:

> set SERVER_SERVLET_CONTEXT_PATH=/baeldung

Указанная выше переменная среды предназначена для Spring Boot 2.xx. Если у нас есть 1.xx , переменная SERVER_CONTEXT_PATH.

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

Мы также можем установить свойства динамически с помощью аргументов командной строки:

$ java -jar app.jar --server.servlet.context-path=/baeldung

3. Использование конфигурации Java

Теперь давайте установим контекстный путь, заполнив фабрику компонентов компонентом конфигурации.

С Spring Boot 2 мы можем использовать WebServerFactoryCustomizer:

@Bean
public WebServerFactoryCustomizer<ConfigurableServletWebServerFactory>
  webServerFactoryCustomizer() {
    return factory -> factory.setContextPath("/baeldung");
}

С Spring Boot 1 мы можем создать экземпляр EmbeddedServletContainerCustomizer:

@Bean
public EmbeddedServletContainerCustomizer
  embeddedServletContainerCustomizer() {
    return container -> container.setContextPath("/baeldung");
}

4. Приоритетный порядок конфигураций

С таким количеством варианты, мы можем в конечном итоге иметь более одной конфигурации для одного и того же свойства.

Вот порядок приоритета в порядке убывания, который Spring Boot использует для выбора эффективной конфигурации:

  1. Java Config
  2. Command Line Arguments
  3. Java System Properties
  4. OS Environment Variables
  5. application.properties in Current Directory
  6. application.properties in the classpath (src/main/resources or the packaged jar file)

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

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