Spring Boot框架提供了用于运行Spring Boot应用程序的默认嵌入式服务器(Tomcat)。它在端口 8080 上运行。可以在Spring 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 接口(用于创建 EmbeddedServletContainers的工厂接口)中的更改的接口。 。它在 org.springframework.boot.context.embedded 包中定义。它包含一种用于更改端口的方法,称为setPort()方法。
setPort()方法
setPort()方法配置嵌入式servlet容器应侦听的端口。如果不指定端口,它将使用默认端口 8080 。如果要禁用嵌入式服务器的自动启动功能,请使用端口 -1 。端口-1表示它将不监听任何端口,而是启动Web应用程序上下文。该方法解析类型为int的参数端口(要设置的 por t)。
void setPort(int port)
在下面的示例中,我们创建了一个名为 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 包中定义。它创建一个 WebServer 。
ConfigurableWebServerFactory
这是配置Web服务器工厂的界面。它在包 org.springframework.boot.web.server 中定义。它扩展了 WebServerFactory 和 ErrorPageRegistory 。它包含一种更改端口的方法,称为 setPort()方法。
setPort()
setPort()方法配置应侦听嵌入式servlet容器的端口。当我们不指定端口时,它将使用默认端口 8080 。如果要禁用嵌入式服务器的自动启动功能,请使用端口 -1 。端口-1表示它将不监听任何端口,而是启动Web应用程序上下文。该方法解析类型为int的参数端口(要设置的 port )。
void setPort(int port)
在下面的示例中,我们创建了一个名为 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 上运行应用程序。