Spring Boot 框架提供了默认的内嵌服务器(Tomcat)来运行 Spring Boot 应用程序。默认情况下,它运行在端口 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  

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

application.properties

server.port=0  

使用 application.yml 文件

同样,我们也可以通过使用 yml 文件来更改默认端口。使用 application.propertiesapplication.yml 文件,两者的工作方式相同。

application.yml

server:  
      port:8082  

使用 EmbeddedServletContainerCustomizer 接口

如果使用的是 Spring Boot 1.x 版本,它提供了一个名为 EmbeddedServletContainerCustomizer 的接口,用于更改默认端口。

EmbeddedServletContainerCustomizer 接口

通过使用 EmbeddedServletContainerCustomizer,我们可以自定义自动配置的内嵌 servlet 容器。所有这种类型的 bean 在启动容器本身之前都会得到一个带有容器工厂的回调。因此,我们可以设置 port、addresses 甚至是 错误页面。该接口定义在 org.springframework.boot.context.embedded 包中。

该接口包含一个名为 customize() 的方法。它允许我们自定义并指定 ConfigurableEmbeddedServletContainer。它解析一个名为 container 的参数,我们要对其进行自定义。

语法

void customize(ConfigurableEmbeddedServletContainer container)  

ConfigurableEmbeddedServletContainer 接口

这是一个反映在 EmbeddedServletContainerFactory 接口中的更改的接口(用于创建 EmbeddedServletContainers 的工厂接口)。它定义在 org.springframework.boot.context.embedded 包中。它包含一个方法来更改端口,称为 setPort() 方法。

setPort() 方法

setPort() 方法配置嵌入式 servlet 容器应监听的端口。当我们不指定端口时,它使用默认端口 8080。如果要禁用嵌入式服务器的自动启动功能,请使用端口 -1。端口 -1 表示它不会监听任何端口,而是启动 Web 应用程序上下文。该方法解析一个名为 port(要设置的端口)的 int 类型参数。

语法

void setPort(int port)  

以下示例中,我们创建了一个名为 ServerCustomizer 的类,并实现了 EmbeddedServletContainerCustomizer 接口。我们重写了 customize() 方法,并调用了 setPort() 方法,设置端口为 8097

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 server factory 的参数 T

语法

public interface WebServerFactoryCustomizer<T extends WebServerFactory<  

该接口包含一个名为 customize() 的方法。它允许我们自定义 Web 服务器工厂。它解析一个名为 factory 的参数,我们要对其进行自定义。所有这种类型的 bean 在启动容器本身之前都会得到一个带有服务器工厂的回调。因此,我们可以设置 port、addresses 甚至是 错误页面

语法

void  customize(T factory)  

WebServerFactory 接口

这是一个工厂的标记接口。它在 org.springframework.boot.web.server 包中定义。它创建一个 WebServer

ConfigurableWebServerFactory

这是一个接口,用于配置 Web 服务器工厂。它在 org.springframework.boot.web.server 包中定义。它扩展了 WebServerFactoryErrorPageRegistory。它包含一个更改端口的方法,称为 setPort() 方法。

setPort() 方法

setPort() 方法配置嵌入式 servlet 容器应监听的端口。当我们不指定端口时,它使用默认端口 8080。如果要禁用嵌入式服务器的自动启动功能,请使用端口 -1。端口 -1 表示它不会监听任何端口,而是启动 Web 应用程序上下文。该方法解析一个名为 port(要设置的端口)的 int 类型参数。

语法

void setPort(int port)  

注意:此 setPort() 方法是 ConfigurableWebServerFactory 接口的方法。

在以下示例中,我们创建了一个名为 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 应用程序。
  • 单击 Run 菜单,选择 Run Configurations,或右键单击应用程序文件 -< Run As -< Run Configurations。运行配置窗口将显示在屏幕上。

ae80d4c7f0a96dcbca71994a375b028.png

运行配置窗口显示在屏幕上。

bac08ae5f50cbac932c5849e85ada90.png

  • 选择要更改端口的应用程序文件。在我们的情况下,我们要更改 SpringBootHelloWorldExampleApplication 的端口,因此我们选择了它。
  • 单击 Arguments 选项卡。

863a78c7eb07d0306e888d317676f85.png

  • VM arguments 字段中写入 -Dserver.port=9001。您可以指定您自己的端口,而不是 9001。

e7ab160d504fd0a9102ab90ed97c0de.png

  • 现在,依次单击 ApplyRun 按钮。 单击 Run 按钮后,应用程序开始运行。我们可以在控制台上看到服务器在哪个端口运行,如下所示。

dd2a5a255f653d3b8afecbcf0b79a76.png

  • 打开浏览器,调用 URL [http://localhost:9001。它将在端口](http://localhost:9001。它将在端口/) 9001 上运行应用程序。

866bbc138df3166062b1a36b556be62.png

标签: spring, Spring教程, Spring语言学习, Spring框架, Spring框架教程, Spring框架高级教程, spring boot, spring boot入门教程, spring boot学习教程, spring boot下载, spring boot框架入门, spring boot面试题, spring boot笔试题, spring boot学习指南, spring boot技术