IntelliJIDEA中实现SpringBoot多实例运行的两种方式

 更新时间:2025年03月26日 09:48:58   作者:codingPower  
在微服务开发中,经常需要同时启动多个服务实例进行测试或模拟集群环境,‌IntelliJ IDEA‌作为Java开发者常用工具,提供了灵活的多实例启动支持,本文将详细介绍如何通过修改配置‌和批量启动‌两种方式实现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类用法

    这篇文章主要介绍了Java容器中常用的ArrayList类与Vector类用法,文中只对其最基本的功能给出了示例代码,需要的朋友可以参考下
    2015-11-11
  • 关于MyBatis通用Mapper@Table注解使用的注意点

    关于MyBatis通用Mapper@Table注解使用的注意点

    这篇文章主要介绍了关于MyBatis通用Mapper@Table注解使用的注意点,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Win10系统下配置Java环境变量

    Win10系统下配置Java环境变量

    今天给大家带来的是关于Java的相关知识,文章围绕着Win10系统下配置Java环境变量展开,文中有非常详细的介绍及图文示例,需要的朋友可以参考下
    2021-06-06
  • @RequestBody不能映射到对象的解决

    @RequestBody不能映射到对象的解决

    这篇文章主要介绍了@RequestBody不能映射到对象的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • java中double转化为BigDecimal精度缺失的实例

    java中double转化为BigDecimal精度缺失的实例

    下面小编就为大家带来一篇java中double转化为BigDecimal精度缺失的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • java基本教程之Thread中start()和run()的区别 java多线程教程

    java基本教程之Thread中start()和run()的区别 java多线程教程

    这篇文章主要介绍了Thread中start()和run()的区别,Thread类包含start()和run()方法,它们的区别是什么?下面将对此作出解答
    2014-01-01
  • java提供的4种函数式接口

    java提供的4种函数式接口

    这篇文章主要介绍了java提供的4种函数式接口,函数接口是只有一个抽象方法的接口,用作 Lambda 表达式的类型并有且只有一个抽象方法的接口,下文详细内容,需要的小伙伴可以参考一下
    2022-03-03
  • Java全面分析面向对象之封装

    Java全面分析面向对象之封装

    或许大家都听说过java是纯面向对象语言,面向对象思想也就是我们常说的OOP,我们听说最多的思想就是继承,封装,多态,今天我们来讲一讲封装
    2022-04-04
  • 解决idea web 配置相对路径问题

    解决idea web 配置相对路径问题

    这篇文章主要介绍了idea web 配置相对路径问题的解决方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06
  • java多态机制原理特点详解

    java多态机制原理特点详解

    在本篇文章里小编给大家分享的是关于java多态机制原理特点详解,有需要的朋友们可以跟着学习下。
    2020-02-02

最新评论