IntelliJIDEA中实现SpringBoot多实例运行的两种方式
一、通过 修改配置实现多实例运行
1. 核心步骤
步骤1:取消单实例限制
打开 Run > Edit Configurations(或工具栏的 Edit Configurations 按钮)。
选择你的Spring Boot启动配置(如 Application)。
在右侧配置面板中,取消勾选 Single instance only(部分旧版本可能显示为 Allow parallel run)。

步骤2:指定不同端口
点击配置界面下方的 Modify options 按钮。
勾选 Add VM options,展开VM参数输入框。
输入 -Dserver.port=新端口号(例如 -Dserver.port=8081)。

步骤3:启动实例
点击运行按钮启动第一个实例后,直接修改VM参数中的端口号(如改为8082),再次点击运行即可启动第二个实例。

2. 应用场景
快速调试:在本地快速启动两个实例,测试负载均衡或接口并发。
版本隔离:同一服务不同分支代码可通过不同端口同时运行测试。
二、通过批量启动实现多实例运行
1. 核心步骤
步骤1:复制启动配置
在 Edit Configurations 界面,右键点击现有Spring Boot配置。
选择 Copy Configuration,生成副本(如 Application (1))。
步骤2:配置多实例参数
方法1:直接修改VM参数
在每个副本的VM选项中指定不同的端口:
#实例1 -Dserver.port=8081 #实例2 -Dserver.port=8082
方法2:使用多配置文件
创建 application-instance1.yml 和 application-instance2.yml 文件。
在VM参数中指定激活的配置文件:
#实例1 -Dspring.profiles.active=instance1 #实例2 -Dspring.profiles.active=instance2
步骤3:批量启动实例
打开 Run Dashboard/Services(若未显示,可在View菜单中启用)。
勾选多个配置,点击运行按钮即可同时启动。

2. 应用场景
模拟集群:启动3个实例模拟服务高可用场景。
多环境对比:使用不同配置文件同时运行开发、测试环境实例。
三、常见问题及解决方案
1. 端口冲突:Port already in use
原因:多个实例使用了相同端口。
解决:
检查所有实例的 server.port 配置。
使用命令查找占用端口的进程并终止:
> # Windows netstat -ano | findstr 8081 taskkill /F /PID <进程ID> > #Linux/Mac > lsof -i:8081 > kill -9 <进程ID>
2. 实例配置覆盖
现象:多个实例共享同一数据库或缓存。
解决:
在VM参数中指定独立配置:
-Dspring.datasource.url=jdbc:mysql://localhost:3306/db1
使用不同配置文件隔离数据源、Redis等配置。
3. 服务注册中心异常
现象:Nacos/Eureka中仅显示一个实例。
解决:
确保实例名称唯一(在配置中添加 -Dspring.application.name=service-8081)。
调整注册中心心跳间隔(避免频繁注销):
# Nacos配置 spring.cloud.nacos.discovery.heart-beat-interval: 5
四、最佳实践与扩展
- 推荐工具
IDEA插件:
Grep Console:区分不同实例的日志颜色。
Rainbow Brackets:提升多窗口代码可读性。 - 性能优化
限制资源占用:在VM参数中设置内存上限:
-Xmx512m -Xms256m
关闭热部署:多实例运行时建议关闭 spring.devtools.restart.enabled=false。
- 容器化扩展
Docker集成:通过IDEA的Docker插件启动多个容器实例:
# docker-compose.yml示例
services:
service1:
image: my-service:latest
ports:
- "8081:8080"
service2:
image: my-service:latest
ports:
- "8082:8080"
五、总结
通过 修改配置 和 批量启动 两种方式,可在IDEA中轻松实现Spring Boot多实例运行:
简单调试:优先使用VM参数快速切换端口。
复杂场景:通过多配置文件和批量启动模拟集群环境。
避坑指南:关注端口冲突、配置隔离和注册中心健康状态。
以上就是IntelliJIDEA中实现SpringBoot多实例运行的两种方式的详细内容,更多关于SpringBoot多实例运行的资料请关注脚本之家其它相关文章!
相关文章
迅速掌握Java容器中常用的ArrayList类与Vector类用法
这篇文章主要介绍了Java容器中常用的ArrayList类与Vector类用法,文中只对其最基本的功能给出了示例代码,需要的朋友可以参考下2015-11-11
关于MyBatis通用Mapper@Table注解使用的注意点
这篇文章主要介绍了关于MyBatis通用Mapper@Table注解使用的注意点,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-11-11
java中double转化为BigDecimal精度缺失的实例
下面小编就为大家带来一篇java中double转化为BigDecimal精度缺失的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2017-03-03
java基本教程之Thread中start()和run()的区别 java多线程教程
这篇文章主要介绍了Thread中start()和run()的区别,Thread类包含start()和run()方法,它们的区别是什么?下面将对此作出解答2014-01-01


最新评论