«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 использует для выбора эффективной конфигурации:
- Java Config
- Command Line Arguments
- Java System Properties
- OS Environment Variables
- application.properties in Current Directory
- application.properties in the classpath (src/main/resources or the packaged jar file)
5. Заключение
В этой статье мы быстро рассмотрели различные способы установки контекстного пути или любого другого свойства конфигурации. , в приложении Spring Boot.