1.概述
默认情况下,Spring Boot 在根上下文路径(“/”)上提供内容。
虽然通常情况下,优先考虑约定优于配置,但有些情况下我们确实希望拥有自定义路径。
在本快速教程中,我们将介绍配置它的不同方法。
2.设置属性
与许多其他配置选项一样,可以通过设置属性(即server.servlet.context-path)来更改Spring Boot中的上下文路径。
请注意,这适用于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系统属性:
1 public static void main(String[] args) { 2 System.setProperty("server.servlet.context-path", "/baeldung"); 3 SpringApplication.run(Application.class, args); 4 }
2.3.OS环境变量
Spring Boot也可以依赖OS环境变量。在基于Unix的系统上,我们可以编写:
export SERVER_SERVLET_CONTEXT_PATH=/baeldung
在Windows上,设置环境变量的命令是:
set SERVER_SERVLET_CONTEXT_PATH=/baeldung
在上述环境变量是springboot2.xx的, 如果我们用1.XX,变量是SERVER_CONTEXT_PATH。
2.4.命令行参数
我们也可以通过命令行参数动态设置属性:
java -jar app.jar --server.servlet.context-path=/baeldung
3.使用Java Config
现在让我们通过使用配置bean填充bean工厂来设置上下文路径。
使用Spring Boot 2,我们可以使用 WebServerFactoryCustomizer:
1 @Bean 2 public WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> 3 webServerFactoryCustomizer() { 4 return factory -> factory.setContextPath("/baeldung"); 5 }
使用Spring Boot 1,我们可以创建EmbeddedServletContainerCustomizer的实例 :
@Bean public EmbeddedServletContainerCustomizer embeddedServletContainerCustomizer() { return container -> container.setContextPath("/baeldung"); }
4.配置的优先顺序
有了这么多选项,我们最终可能会为同一个属性配置多个配置。
下面是降序的优先级顺序, Spring Boot用它来选择有效的配置:
- Java配置
- 命令行参数
- Java系统属性
- 操作系统环境变量
- 当前目录中的application.properties
- 类路径中的application.properties(src / main / resources或打包的jar文件)
5.结论
在本文中,我们快速介绍了在Spring Boot应用程序中设置上下文路径或任何其他配置属性的不同方法。