IntelliJ IDEA启动项目时配置端口的操作指南

 更新时间:2025年09月12日 08:56:47   作者:李少兄  
默认情况下,Spring Boot 应用会使用 8080 端口启动,但在有些场景中,我们必须自定义端口,所以本文给大家详细介绍了IntelliJ IDEA启动项目时配置端口的详细指南,需要的朋友可以参考下

一、为什么需要手动设置启动端口?

默认情况下,Spring Boot 应用会使用 8080 端口启动。但在以下场景中,我们必须自定义端口:

  • 多个微服务同时运行,需避免端口冲突;
  • 团队协作开发,统一规范不同服务的端口号;
  • 测试负载均衡或集群部署;
  • CI/CD 环境下动态传入端口;
  • 调试时快速切换配置而不修改源码。

二、四种主流方式

方法一:通过配置文件设置端口(推荐用于常规开发)

这是最基础也是最常用的配置方式,适用于 Spring Boot 项目。

支持的配置文件类型

文件名格式说明
application.properties键值对格式,简洁明了
application.yml层级结构清晰,适合复杂配置

操作步骤

打开你的项目资源目录:

src/main/resources/

编辑 application.properties 文件,添加如下内容:

server.port=8081

或者编辑 application.yml 文件:

server:
  port: 8081

保存文件后直接运行主类即可生效。

注意事项

  • 若未指定端口,默认使用 8080
  • 配置文件中的设置会被更高优先级的方式覆盖(见后文“优先级”章节)。
  • 推荐使用 .yml 格式以支持多 profile 配置(如 application-dev.yml, application-prod.yml)。

最佳实践

# application.yml 示例:根据不同环境设置端口
spring:
  profiles:
    active: dev

---
spring:
  config:
    activate:
      on-profile: dev
server:
  port: 8081

---
spring:
  config:
    activate:
      on-profile: test
server:
  port: 9090

然后在运行配置中添加程序参数:--spring.profiles.active=test

方法二:通过 VM Options 设置端口(适合临时调试与多实例)

当你要在同一台机器上启动多个相同服务实例时,VM Options 是最实用的方式。

关键点:新版 IDEA 默认隐藏部分高级选项,必须手动开启!

完整操作流程(含界面细节)

点击右上角运行配置下拉框 → 选择 Edit Configurations…

在左侧选择你的运行配置(通常是 Spring Boot 类型)

查找右侧是否有 “VM options:” 输入框:

  • 如果没有,请点击下方按钮:Modify Options
  • 弹出菜单后勾选 Add VM options

此时会出现输入框,在其中填写:

-Dserver.port=8082

点击 ApplyOK

启动项目,查看控制台输出确认端口已变更:

Tomcat started on port(s): 8082 (http)

新版 IDEA 界面提示(文字版)

  • “Modify Options” 按钮位于配置面板底部,图标为齿轮或三个点。
  • 勾选后,“VM options” 字段自动出现,支持 -Dkey=value 形式的 JVM 参数注入。

使用场景举例

场景配置示例
第一个实例-Dserver.port=8081
第二个实例-Dserver.port=8082
第三个实例-Dserver.port=8083

可复制多个运行配置,分别设置不同端口,实现一键并行启动。

方法三:通过 Program Arguments 设置端口(命令行风格)

与 VM Options 不同,这种方式是将参数传递给应用程序本身,而非 JVM。

如何添加?

  1. 进入 Run/Debug Configurations
  2. 点击 Modify Options
  3. 勾选 Program arguments
  4. 输入:
--server.port=8084

与 VM Options 的区别对比

维度VM Options (-D)Program Arguments (--)
作用对象JVM 系统属性应用程序参数
语法-Dkey=value--key=value
是否影响其他系统属性
Spring Boot 是否识别✅ 是✅ 是
优先级更高略低(但仍高于配置文件)

注:两者均可被 Spring Boot 正确解析,但 -D 方式更底层,可用于非 Spring 项目。

方法四:通过环境变量设置端口(适合生产模拟与自动化)

某些云平台或容器化部署依赖环境变量来决定端口(如 Kubernetes、Docker)。

在 IDEA 中模拟环境变量

  1. 进入 Run Configuration
  2. 点击 Modify Options
  3. 勾选 Environment variables
  4. 添加键值对:
    • Key: SERVER_PORT
    • Value: 8085

或者写成一行:

SERVER_PORT=8085;JAVA_OPTS=-Xmx512m

提示:Spring Boot 自动映射 SERVER_PORT 到 server.port

实际应用场景

# Docker 启动时指定
docker run -e SERVER_PORT=8086 my-spring-app

在本地 IDEA 中提前测试该行为,可极大提升部署稳定性。

三、四大方式优先级

Spring Boot 对端口配置有明确的优先级顺序,了解这一点至关重要:

优先级配置方式来源
1️⃣ 最高命令行参数--server.port=9000
2️⃣VM Options-Dserver.port=9000
3️⃣环境变量SERVER_PORT=9000
4️⃣配置文件application.yml / application.properties
5️⃣ 最低默认值内嵌服务器默认端口(Tomcat: 8080)

记忆口诀:“外 > 内,动 > 静” —— 外部传入 > 内部写死;动态传参 > 静态配置

四、进阶:多实例并行启动(Compound Configuration)

当你需要一次性启动多个不同端口的服务(例如订单服务 + 用户服务 + 网关),可以使用 Compound Configuration 功能。

操作步骤

  1. 打开 Edit Configurations
  2. 点击左上角 + 号 → 选择 Compound
  3. 命名(如:Microservices Cluster
  4. Included configurations 中添加多个已有的运行配置
  5. 每个子配置可独立设置端口(通过 VM Options)
  6. 点击运行按钮,所有服务将按顺序启动

优势

  • 一键启动整个微服务体系;
  • 支持跨模块联合调试;
  • 提升团队协作效率。

五、常见问题与解决方案

Q1:启动时报错 Address already in use: bind

说明端口已被占用。

解决方案:

Windows:

netstat -ano | findstr :8081
taskkill /PID <进程ID> /F

macOS/Linux:

lsof -i :8081
kill -9 <PID>

Q2:VM Options 选项找不到?

原因:新版 IDEA 默认隐藏。

正确做法:

  • 必须先进入 Modify Options
  • 主动勾选 Add VM options

Q3:端口改了但没生效?

检查:

  1. 是否拼错关键字(应为 server.port,不是 port.server
  2. 是否有多个配置文件冲突
  3. 是否使用了 Profile 激活了另一个配置
  4. 控制台日志是否显示最终使用的端口

六、各方法适用场景总结

方法适用阶段是否推荐备注
配置文件日常开发✅ 强烈推荐易维护,版本控制友好
VM Options调试/多实例✅ 推荐灵活,不污染代码
Program Arguments命令行兼容✅ 推荐与脚本一致
环境变量生产模拟✅ 推荐符合 DevOps 实践
Compound 配置微服务联调✅ 强烈推荐提升开发效率

七、技术延伸

Spring Boot 使用 PropertySource 层次结构加载配置,形成一个有序的“配置栈”。你可以通过以下代码验证当前生效的端口来源:

@RestController
public class PortInfoController {

    @Value("${server.port}")
    private int port;

    @Autowired
    private Environment env;

    @GetMapping("/port")
    public Map<String, Object> getPortInfo() {
        Map<String, Object> info = new HashMap<>();
        info.put("currentPort", port);
        info.put("propertySources", Arrays.toString(env.getPropertySources().stream()
            .map(EnumerablePropertySource::getName)
            .toArray()));
        return info;
    }
}

访问 /port 接口即可看到哪些配置源参与了决策。

以上就是IntelliJ IDEA启动项目时配置端口的操作指南的详细内容,更多关于IDEA启动项目配置端口的资料请关注脚本之家其它相关文章!

相关文章

  • 解决SpringCloud Gateway配置自定义路由404的坑

    解决SpringCloud Gateway配置自定义路由404的坑

    这篇文章主要介绍了解决SpringCloud Gateway配置自定义路由404的坑,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • java中request对象各种方法的使用实例分析

    java中request对象各种方法的使用实例分析

    这篇文章主要介绍了java中request对象各种方法的使用,结合完整实例形式较为详细的分析了request对象的功能及其常用方法的使用技巧,需要的朋友可以参考下
    2015-12-12
  • Spring常用注解 使用注解来构造IoC容器的方法

    Spring常用注解 使用注解来构造IoC容器的方法

    下面小编就为大家分享一篇Spring常用注解 使用注解来构造IoC容器的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • java获取当前时间和前一天日期(实现代码)

    java获取当前时间和前一天日期(实现代码)

    java获取当前时间和前一天日期的实现代码。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-10-10
  • 浅谈多线程中的锁的几种用法总结(必看)

    浅谈多线程中的锁的几种用法总结(必看)

    下面小编就为大家带来一篇浅谈多线程中的锁的几种用法总结(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • SpringMVC之异常处理解读

    SpringMVC之异常处理解读

    这篇文章主要介绍了SpringMVC之异常处理解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • SpringBoot集成Nacos的项目实践

    SpringBoot集成Nacos的项目实践

    本文主要介绍了SpringBoot集成Nacos的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • 简单了解SpringBoot过滤器及使用方式

    简单了解SpringBoot过滤器及使用方式

    这篇文章主要介绍了简单了解SpringBoot过滤器及使用方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Netty进阶之EventExecutorGroup源码详解

    Netty进阶之EventExecutorGroup源码详解

    这篇文章主要介绍了Netty进阶之EventExecutorGroup源码详解,EventExecutorGroup继承了JDK的ScheduledExecutroService,那么它就拥有了执行定时任务,执行提交的普通任务,需要的朋友可以参考下
    2023-11-11
  • Java异常架构和异常关键字图文详解

    Java异常架构和异常关键字图文详解

    Java异常是Java提供的一种识别及响应错误的一致性机制,下面这篇文章主要给大家介绍了关于Java异常架构和异常关键字的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-05-05

最新评论