1. 概述
Spring Boot 提供許多配置屬性的合理默認值。但我們有時需要使用我們特定情況下的值來自定義這些屬性。
一個常見的用例是更改嵌入式服務器的默認端口。
在本快速教程中,我們將介紹幾種實現此目的的方法。
2. 使用屬性文件
自定義 Spring Boot 最快、最簡單的方法是覆蓋默認屬性的值。
對於服務器端口,我們想要更改的屬性是 server.port.
默認情況下,嵌入式服務器啓動在 8080 端口。
下面我們將演示如何在 application.properties 文件中提供不同的值:
server.port=8081現在服務器將啓動在 8081 端口。
如果使用 application.yml 文件,也可以這樣做:
server:
port : 8081如果將文件放置在 Maven 應用程序的 src/main/resources 目錄下,Spring Boot 將會自動加載它們。
2.1. 環境特定端口
如果我們的應用程序部署在不同的環境中,我們可能希望它在每個系統上使用不同的端口。
我們可以通過結合屬性文件方法和 Spring 配置文件來實現這一點。 具體來説,我們可以為每個環境創建一個屬性文件。
例如,我們將會有一個 application-dev.properties 文件,內容如下:
server.port=8081然後我們將會添加另一個 application-qa.properties 文件,使用不同的端口:
server.port=8082現在,屬性文件配置應該足以應對大多數情況。但是,還有其他選項可以用於此目標,讓我們一起探索它們。
3. 編程方式的配置
我們可以通過在應用程序啓動時設置特定屬性或自定義嵌入式服務器配置,來編程方式地配置端口。
首先,讓我們看看如何在主 @SpringBootApplication 類中設置屬性:
@SpringBootApplication
public class CustomApplication {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(CustomApplication.class);
app.setDefaultProperties(Collections
.singletonMap("server.port", "8083"));
app.run(args);
}
}接下來,要自定義服務器配置,我們需要實現 WebServerFactoryCustomizer 接口:
@Component
public class ServerPortCustomizer
implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> {
@Override
public void customize(ConfigurableWebServerFactory factory) {
factory.setPort(8086);
}
}請注意,此説明適用於 Spring Boot 2.x 版本。
對於 Spring Boot 1.x 版本,我們可以同樣地實現 EmbeddedServletContainerCustomizer 接口。
4. 使用命令行參數
當將我們的應用程序打包並以 jar 格式運行時,可以使用 java 命令設置 server.port 參數:
java -jar spring-5.jar --server.port=8083或者通過使用等效的語法:
java -jar -Dserver.port=8083 spring-5.jar5. 評估順序
Spring Boot 對這些方法進行評估時,請注意以下順序。
基本上,配置的優先級如下:
- 嵌入式服務器配置
- 命令行參數
- 屬性文件
- 主配置 >
6. 結論
在本文中,我們學習瞭如何在 Spring Boot 應用程序中配置服務器端口。