Spring Boot框架提供了用于運行Spring Boot應用程序的默認嵌入式服務器(Tomcat)。它在端口 8080 上運行??梢栽赟pring Boot中更改端口。
我們可以在 Spring Boot 中更改端口。通過使用以下接口和屬性文件:
使用 application.properties 文件 使用 application.yml 文件 使用 EmbeddedServletContainerCustomizer 接口 使用 WebServerFactoryCustomizer 界面 使用命令行參數
如果要更改默認端口,建議您使用application.properties文件。因為這是一種覆蓋默認值的簡便快捷的方法。我們使用 server.port 屬性覆蓋默認屬性。
例如,如果要將默認端口8080更改為8082,請在application.properties文件中指定該屬性。
application.properties
server.port=8082
我們還可以將port屬性設置為0。它將掃描應用程序的隨機端口。每當我們重新啟動應用程序時,它都會使用一個新端口。
application.properties
server.port=0
類似地,我們也可以使用 yml 文件來更改默認端口。使用 application.properties 或 application.yml 文件,兩個文件的工作方式相同。
application.yml
server: port:8082
如果您使用的是 Spring Boot 1.x 版本,它將提供一個接口 EmbeddedServletContainerCustomizer 更改默認端口。
EmbeddedServletContainerCustomizer接口
通過使用EmbeddedServletContainerCustomizer,我們可以自定義自動配置的嵌入式Servlet容器。在啟動容器本身之前,所有這種類型的Bean都會通過容器工廠獲得回調。因此,我們可以設置 端口,地址和 均勻錯誤頁面。它在 org.springframework.boot.context.embedded 包中定義。
該接口包含名為 customize()的方法。它允許我們自定義和指定 ConfigurableEmbeddedServletContainer 。它解析我們要自定義的名為 容器的參數。
void customize(ConfigurableEmbeddedServletContainer container)
ConfigurableEmbeddedServletContainer接口
這是一個反映 EmbeddedServletContainerFactory 接口(用于創(chuàng)建 EmbeddedServletContainers的工廠接口)中的更改的接口。 。它在 org.springframework.boot.context.embedded 包中定義。它包含一種用于更改端口的方法,稱為setPort()方法。
setPort()方法
setPort()方法配置嵌入式servlet容器應偵聽的端口。如果不指定端口,它將使用默認端口 8080 。如果要禁用嵌入式服務器的自動啟動功能,請使用端口 -1 。端口-1表示它將不監(jiān)聽任何端口,而是啟動Web應用程序上下文。該方法解析類型為int的參數端口(要設置的 por t)。
void setPort(int port)
在下面的示例中,我們創(chuàng)建了一個名為 ServerCustomizer 的類,并實現了EmbeddedServletContainerCustomizer接口。我們已經重寫了customize()方法,并調用了設置端口 8097 的setPort()方法。
ServerCustomizer.java
@Component public class ServerCustomizer implements EmbeddedServletContainerCustomizer { @Override public void customize(ConfigurableEmbeddedServletContainer container) { container.setPort(8097); } }
Spring Boot 2.x版本提供了 WebServerFactoryCustomizer 接口來更改默認端口。它在包 org.springframework.boot.web.server 中定義。它解析Web服務器工廠類型的參數 T 。
public interface WebServerFactoryCustomizer<T extends WebServerFactory<
該接口包含名為 customize()的方法。它允許我們自定義Web服務器工廠。它解析我們要自定義的名為 factory 的參數。在啟動容器本身之前,所有這種類型的Bean都會通過服務器工廠進行回調。因此,我們可以設置 端口,地址和 錯誤頁面。
void customize(T factory)
WebServerFactory接口
這是工廠的標記接口。它在 org.springframework.boot.web.server 包中定義。它創(chuàng)建一個 WebServer 。
ConfigurableWebServerFactory
這是配置Web服務器工廠的界面。它在包 org.springframework.boot.web.server 中定義。它擴展了 WebServerFactory 和 ErrorPageRegistory 。它包含一種更改端口的方法,稱為 setPort()方法。
setPort()
setPort()方法配置應偵聽嵌入式servlet容器的端口。當我們不指定端口時,它將使用默認端口 8080 。如果要禁用嵌入式服務器的自動啟動功能,請使用端口 -1 。端口-1表示它將不監(jiān)聽任何端口,而是啟動Web應用程序上下文。該方法解析類型為int的參數端口(要設置的 port )。
void setPort(int port)
在下面的示例中,我們創(chuàng)建了一個名為 ServerCustomizer 的類,該類實現了WebServerFactoryCustomizer接口。我們已經重寫了customize()方法,并調用了setPort()方法來設置端口 9001 。
ServerCustomizer.java
@Component public class ServerCustomizer implements WebServerFactoryCustomizer< ConfigurableWebServerFactory < { @Override public void customize(ConfigurableWebServerFactory factory) { factory.setPort(9001); } }
我們還可以通過使用命令行參數在Spring Boot中更改端口。我們必須遵循以下步驟:
打開任何Spring Boot應用程序。 單擊運行菜單,然后選擇運行配置,或右鍵單擊應用程序文件-
<運行方式-<
運行配置。屏幕上將顯示"運行配置"窗口。
運行配置窗口出現在屏幕上。
選擇要在其中更改端口的應用程序文件。在我們的實例中,我們想更改 SpringBootHelloWorldExampleApplication 的端口,所以我們選擇了它。 單擊參數標簽。
在 VM參數字段中寫入 -Dserver.port = 9001 。您可以指定自己的端口,而不是9001。
現在,分別單擊應用和運行按鈕。
單擊"運行"按鈕后,應用程序開始運行。我們可以看到控制臺,以查看正在哪個端口服務器上運行,如下所示。
打開瀏覽器并調用URL http://localhost: 9001。它在端口 9001 上運行應用程序。