如何在 Spring Boot 中更改默认端口

更新于 2025-12-30

Loredana Crusoveanu 2018-05-01

1. 概述

Spring Boot 为许多配置属性提供了合理的默认值。但在某些情况下,我们需要根据具体需求自定义这些值。

一个常见的用例就是更改内嵌服务器的默认端口。

在本篇快速教程中,我们将介绍几种实现方式。

2. 使用属性文件

自定义 Spring Boot 最快捷、最简单的方式是覆盖默认属性的值。

对于服务器端口,我们需要修改的属性是 server.port

默认情况下,内嵌服务器会在 8080 端口启动。

application.properties 文件中设置:

server.port=8081

这样,服务器将改在 8081 端口启动。

如果使用的是 application.yml 文件,则写法如下:

server:
  port: 8081

只要将这两个文件放在 Maven 项目的 src/main/resources 目录下,Spring Boot 就会自动加载它们。

2.1. 针对不同环境设置不同端口

如果应用需要部署在多个环境中,我们可能希望它在每个环境中运行在不同的端口上。

通过结合属性文件与 Spring Profiles(配置文件),我们可以轻松实现这一点。具体做法是为每个环境创建对应的属性文件。

例如,创建一个 application-dev.properties 文件,内容如下:

server.port=8081

再创建一个 application-qa.properties 文件,使用不同的端口:

server.port=8082

对于大多数场景来说,使用属性文件进行配置已经足够。但 Spring Boot 还提供了其他方式,下面我们继续探讨。

3. 编程式配置

我们也可以通过编程方式配置端口,包括在启动应用时设置特定属性,或自定义内嵌服务器的配置。

方法一:在主 @SpringBootApplication 类中设置属性

@SpringBootApplication
public class CustomApplication {
    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(CustomApplication.class);
        app.setDefaultProperties(Collections
          .singletonMap("server.port", "8083"));
        app.run(args);
    }
}

方法二:通过实现 WebServerFactoryCustomizer 接口自定义服务器配置

@Component
public class ServerPortCustomizer 
  implements WebServerFactoryCustomizer<ConfigurableWebServerFactory> {
 
    @Override
    public void customize(ConfigurableWebServerFactory factory) {
        factory.setPort(8086);
    }
}

注意:上述代码适用于 Spring Boot 2.x 版本。
对于 Spring Boot 1.x,可类似地实现 EmbeddedServletContainerCustomizer 接口。

4. 使用命令行参数

当我们将应用打包成 JAR 文件并运行时,可以通过 Java 命令直接指定 server.port 参数:

java -jar spring-5.jar --server.port=8083

或者使用等效的系统属性语法:

java -jar -Dserver.port=8083 spring-5.jar

5. 配置优先级顺序

最后需要注意的是,Spring Boot 对上述各种配置方式设有明确的优先级顺序。

从高到低依次为:

  1. 内嵌服务器的编程式配置(如 WebServerFactoryCustomizer
  2. 命令行参数(如 --server.port=8083
  3. 属性文件(如 application.properties 或 profile-specific 文件)
  4. @SpringBootApplication 类中的 setDefaultProperties 设置

优先级高的配置会覆盖优先级低的配置。

6. 结论

本文介绍了在 Spring Boot 应用中配置服务器端口的多种方法,包括属性文件、编程式配置和命令行参数等。开发者可根据实际需求选择最合适的方式。