How to Change the Default Port in Spring Boot
1.簡介
Spring Boot為許多配置屬性提供合理的默認值。盡管如此,我們有時需要使用特定於案例的值來定制這些值。
常見用例是更改嵌入式服務器的默認端口。
在本快速教程中,我們將介紹實現此目的的幾種方法。
2.使用屬性文件
自定義Spring Boot的最快速最簡單的方法是覆蓋默認屬性的值。
對於服務器端口,我們要更改的屬性是server.port。
默認情況下,嵌入式服務器從端口8080開始。讓我們看看我們如何在application.properties文件中提供不同的值:
server.port=8081
現在服務器將在端口8081上啟動。
同樣,如果我們使用的是
server:
port : 8081
如果放在Maven應用程序的src/main/resources目錄中,則Spring Boot會自動加載這兩個文件(application.properties或者application.yml)。
2.1.環境特定端口
如果我們有一個部署在不同環境中的應用程序,我們可能希望它在每個系統上的不同端口上運行。
我們可以通過將屬性文件方法與Spring配置文件相結合來輕松實現此目的 具體來說,我們可以為每個環境創建屬性文件。
例如,我們將有一個帶有內容的application-dev.properties
server.port=8081
然後,我們將添加另一個帶有不同端口的application-qa.properties文件:
server.port=8082
對於大多數情況,修改屬性文件配置應該足夠了。
但是,這個目標還有其他選擇,所以我們也要探索它們。
3.程序化配置
我們可以通過在啟動應用程序時設置特定屬性或通過自定義嵌入式服務器配置來以編程方式配置端口。
首先,讓我們看看如何在主@SpringBootApplication類中設置屬性:
1 @SpringBootApplication 2 public class CustomApplication {3 public static void main(String[] args) { 4 SpringApplication app = new SpringApplication(CustomApplication.class); 5 app.setDefaultProperties(Collections 6 .singletonMap("server.port", "8083")); 7 app.run(args); 8 } 9 }
接下來,要自定義服務器配置,我們必須實現WebServerFactoryCustomizer接口:
1 @Component 2 public class ServerPortCustomizer 3 implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> { 4 5 @Override 6 public void customize(ConfigurableWebServerFactory factory) { 7 factory.setPort(8086); 8 } 9 }
請註意,這適用於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.jar
5.調用順序
最後,我們來看看Spring Boot調用這些方法的順序。
基本上,配置優先級是:
- 嵌入式服務器配置
- 命令行參數
- 屬性文件
- 主@SpringBootApplication配置
六,結論
在本快速教程中,我們了解了如何在Spring Boot應用程序中配置服務器端口。
How to Change the Default Port in Spring Boot