Spring Boot 更改端口

2025年3月18日 | 阅读时长 4 分钟

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

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

application.properties

使用 application.yml 文件

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

application.yml

使用 EmbeddedServletContainerCustomizer 接口

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

EmbeddedServletContainerCustomizer 接口

通过使用 EmbeddedServletContainerCustomizer,我们可以自定义自动配置的嵌入式 servlet 容器。 此类型的所有 bean 都会在启动容器本身之前收到带有容器工厂的回调。 因此,我们可以设置 端口、地址 甚至 错误页面。 它在 org.springframework.boot.context.embedded 包中定义。

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

语法

ConfigurableEmbeddedServletContainer 接口

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

setPort() 方法

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

语法

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

ServerCustomizer.java

使用 WebServerFactoryCustomizer 接口

Spring Boot 2.x 版本提供了 WebServerFactoryCustomizer 接口来更改默认端口。 它在包 org.springframework.boot.web.server 中定义。 它解析一个类型为 web 服务器工厂的参数 T

语法

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

语法

WebServerFactory 接口

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

ConfigurableWebServerFactory

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

setPort()

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

语法

注意:此 setPort() 方法属于接口 ConfigurableWebServerFactory

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

ServerCustomizer.java

使用命令行参数

我们还可以通过使用命令行参数来更改 Spring Boot 中的端口。 我们必须按照下面给出的步骤进行操作

  • 打开任何 Spring Boot 应用程序。
  • 单击 Run 菜单并选择 Run Configurations 或右键单击应用程序文件 -< Run As -< Run Configurations。 屏幕上将出现 Run Configurations 窗口。
    Spring Boot Change Port
    Run Configurations 窗口 就会出现在屏幕上。
    Spring Boot Change Port
  • 选择您要更改端口的应用程序文件。 在我们的例子中,我们要更改 SpringBootHelloWorldExampleApplication 的端口,因此我们选择了它。
  • 单击 Arguments 选项卡。
    Spring Boot Change Port
  • VM arguments 字段中写入 -Dserver.port=9001。 您可以指定您自己的端口而不是 9001。
    Spring Boot Change Port
  • 现在,分别单击 ApplyRun 按钮。
    单击 Run 按钮后,应用程序开始运行。 我们可以看到控制台,查看服务器正在哪个端口上运行,如下所示。
    Spring Boot Change Port
  • 打开浏览器并调用 URL https://:9001。 它在端口 9001 上运行应用程序。
    Spring Boot Change Port

下一个主题Spring