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應用程序中設置上下文路徑或任何其他配置屬性的不同方法。