Spring Boot框架提供了运行Spring Boot应用程序的默认嵌入式服务器(Tomcat)。它在端口 8080 上运行。可以在Spring Boot中更改端口。

我们可以使用以下接口和属性文件在 Spring Boot 中更改端口:

  • 使用 application.properties 文件
  • 使用 application.yml 文件
  • 使用 EmbeddedServletContainerCustomizer 接口
  • 使用 WebServerFactoryCustomizer 接口
  • 使用命令行参数

使用application.properties文件

如果要更改默认端口,建议您使用application.properties文件。因为这是一种覆盖默认值的简便快捷的方法。我们使用 server.port 属性覆盖默认属性。

例如,如果我们要将默认端口8080更改为8082,请在application.properties文件中指定该属性。

application.properties

server.port=8082

我们还可以将port属性设置为0。它将扫描应用程序的随机端口。每当我们重新启动应用程序时,它都会使用一个新端口。

application.properties

server.port=0

使用application.yml文件

同样,我们也可以使用yml文件更改默认端口。使用application.properties或application.yml文件,这两个文件的工作方式相同。

application.yml

server:
      port:8082

使用EmbeddedServletContainerCustomizer接口

如果您使用的是 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的参数端口(要设置的 port 端口)。

语法

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);
  }
}

使用WebServerFactoryCustomizer接口

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)

Note: 此setPort()方法的接口为ConfigurableWebServerFactory。

在下面的示例中,我们创建了一个名为 ServerCustomizer 的类,该类实现了WebServerFactoryCustomizer接口。我们已经重写了customize()方法,并调用了设置端口 9001 的setPort()方法。

ServerCustomizer.java

@Component
public class ServerCustomizer implements WebServerFactoryCustomizer< ConfigurableWebServerFactory < 
{
  @Override
  public void customize(ConfigurableWebServerFactory factory) 
  {
    factory.setPort(9001);
  }
}

使用命令行参数

我们还可以使用命令行参数在Spring Boot中更改端口。我们必须遵循以下步骤:

    VM参数字段中写入 -Dserver.port = 9001 。您可以指定自己的端口,而不是9001。  Spring Boot Change端口
  • 现在,分别单击应用运行按钮。 单击"运行"按钮后,该应用程序开始运行。我们可以看到控制台,以查看正在哪个端口服务器上运行,如下所示。  Spring Boot Change Port
  • 打开浏览器并调用URL http:// localhost:9001。它在端口 9001 上运行应用程序。 春季启动更改端口

这一章你学到了什么?来做个笔记,好记忆不如烂笔头! 如果觉得对您有帮助,麻烦帮分享给您的朋友。

祝学习愉快! (如果觉得不正确,选中要修改的内容->右键->编辑)

点我分享笔记