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