1. 概述
Spring Boot,默認情況下,
會在根上下文路徑 (“/”) 上提供內容。
雖然通常建議採用約定優於配置,但在某些情況下,我們仍然需要自定義路徑。
在本快速教程中,我們將介紹配置的不同方法。
2. 設置屬性
類似於許多其他配置選項,Spring Boot 中的上下文路徑可以通過設置屬性 server.servlet.context-path 進行更改。
請注意,這適用於 Spring Boot 2.x。對於 Boot 1.x,該屬性是 server.context-path。
有多種方法可以設置此屬性,讓我們逐一瞭解它們。
2.1. 使用 <em application.properties / <em yml
最直接的方法是設置 <em application.properties/<em 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);
}<h3><strong>2.3. OS 環境變量</strong></h3>
<p>Spring Boot 也可以依賴於 OS 環境變量。在基於 Unix 的系統上,我們可以編寫:</p>
$ export SERVER_SERVLET_CONTEXT_PATH=/baeldung在 Windows 上,設置環境變量的命令是:
> set SERVER_SERVLET_CONTEXT_PATH=/baeldung上述環境變量適用於 Spring Boot 2.x.x 版本。 如果使用的是 1.x.x 版本,則變量為 SERVER_CONTEXT_PATH
2.4. 命令行參數
我們可以通過命令行參數動態設置屬性:
$ java -jar app.jar --server.servlet.context-path=/baeldung3. 使用 Java 配置
現在,讓我們通過將 Bean 工廠填充一個配置 Bean,設置上下文路徑。
在 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
- 命令行參數
- Java 系統屬性
- 操作系統環境變量
- 當前目錄下的 application.properties
- 類路徑下的 application.properties(src/main/resources 或打包後的 jar 文件)
5. 結論
在本文中,我們介紹了在 Spring Boot 應用程序中設置上下文路徑或其他配置屬性的不同方法。