Spring Boot 默认端口:5 种配置方法

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

为什么您的 Spring Boot “不想”监听 8080 端口?

\n

您启动第一个 Spring Boot 应用程序,在控制台看到熟悉的横幅,打开浏览器——却显示“Connection refused”。熟悉的情况吗?最常见的问题是 8080 端口已被其他进程占用(例如 Skype、Docker 或您应用程序的另一个实例)。或者,您需要在一台机器上启动三个微服务,而它们都想占用同一个端口。

\n

在本文中,我们将介绍 Spring Boot 中配置端口的所有主要方法——从最简单的方法到用于生产环境的“实战”方法。您将了解如何通过配置文件、环境变量、命令行参数甚至程序化方式来覆盖端口。最后,我会提供一个清单,告诉您根据具体情况选择哪种方法。

\n\n

方法 1:application.properties —— 经典方法

\n

最常用且直观的方法。在文件 src/main/resources/application.properties 中只需添加一行:

\n
server.port=9090
\n

就这样。重启后,应用程序将监听 9090 端口。如果需要恢复 8080 端口,只需删除或注释掉该行即可。

\n

优点:简单、易懂、开箱即用。

\n

缺点:硬编码在代码中——对于每个环境(开发、测试、生产),您需要手动更改文件或使用配置文件。

\n\n

方法 2:application.yml (YAML) —— 适合喜欢结构化的人

\n

如果您更喜欢 YAML 格式,配置将如下所示:

\n
server:\n  port: 9090
\n

注意缩进:port 前有两个空格。YAML 对空格敏感,但它允许您对设置进行分组。例如,您可以同时设置上下文路径:

\n
server:\n  port: 9090\n  servlet:\n    context-path: /myapp
\n

何时使用:如果您的项目已经对所有配置使用 YAML(例如,用于 Spring Cloud Config)。

\n\n

方法 3:命令行参数 —— 为 DevOps 提供灵活性

\n

最灵活的方法,常用于容器和 CI/CD。启动 JAR 文件时,只需传递参数:

\n
java -jar myapp.jar --server.port=9090
\n

或者,如果您使用 Maven/Gradle 插件:

\n
mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=9090
\n

命令行参数在 Spring Boot 的所有配置方法中具有 最高优先级。这意味着它们将覆盖 application.properties 中的设置。

\n

非常适合:Docker 容器、Kubernetes、自动化部署。

\n\n

方法 4:环境变量 —— 十二要素应用的标准

\n

Spring Boot 会自动读取环境变量并将其转换为属性。规则很简单:SERVER_PORT(大写,下划线代替点)将变成 server.port。

\n

在 Linux/macOS 上:

\n
export SERVER_PORT=9090\njava -jar myapp.jar
\n

在 Windows (cmd) 上:

\n
set SERVER_PORT=9090\njava -jar myapp.jar
\n

在 Docker Compose 中,这看起来更优雅:

\n
services:\n  myapp:\n    image: myapp:latest\n    ports:\n      - "9090:9090"\n    environment:\n      - SERVER_PORT=9090
\n

为什么这很酷:环境变量不会进入代码仓库,易于为不同环境更改,并且遵循 12-factor app 方法论。

\n\n

方法 5:程序化配置 —— 用于微观管理

\n

有时需要动态计算端口(例如,查找空闲端口或从外部服务获取)。这时 Java 代码就派上用场了。

\n

最简单的方法是在类中重写 setServerPort 方法

博客

书籍推荐