Idea启动多个SpringBoot项目的3种方案

悟纤:师傅,你最近是哪去了,这上班都快1个月了,都没见你踪影,你这是上哪里去放纵去了吗?

师傅:徒儿,你说的这是啥话,是放松,不是放纵,为师严重怀疑你的语文是xxx教的。

悟纤:那师傅你倒是说,你干嘛去了。

师傅:为师也是有苦说不去呀,最近刚刚接手了一个烂摊子,团队各种问题、架构各种问题,忙的不可开交呐。

悟纤:我说师傅最近怎么这么忙,还以为你不搭理我了。

师傅:徒儿这么可爱,怎么会不搭理你呐。虽然为师最近历经沧桑,但是不得不说为师也是学习到了很多,成长了很多。所以当你能够直面问题和困难的时候,你注定会成长。保持不断的成长,无惧困难和挑战。

悟纤:还得是师傅。刚好有个问题想请教下师傅,我想在Idea启动多个SpringBoot项目,除了傻傻的修改配置文件这种方式,还有其它比较友好的方式吗。

师傅:师傅,那是当然了,为师这就来跟你说几种方案。

悟纤:我已经迫不及待的想学习了~

导读

有时同一个服务要启动多份测试负载均衡,那我们不能傻傻的去复制多份吧,对于这个问题,有很多种方案,在这里通过深入浅出的讲解方式,希望打开大家的思考问题的思维方式。

一、准备工作

使用Idea构建一个hello world的Spring Boot项目。

开发环境说明:

(1)Spring Boot 2.7.0

(2)Idea:IntelliJ IDEA 2022.2.2

(3)OS:Mac OS

环境不太一样,有些操作是有些微区别的,但是整体的思路是一样的。

二、启动多个SpringBoot

2.1 方案一:修改配置文件的端口

在Spring Boot项目中,端口号可以在配置文件进行配置,所以最简单可以想到的方案是修改配置文件application.(properties/yml)的端口配置server.port,具体操作:

(1)先配置server.port = 8080,运行启动类启动应用。

(2)再修改server.port = 8081,运行启动类启动应用。

这样就启动了两个不同端口的Spring Boot应用。这种方式简单,但是却操作不友好,每次修改配置文件,实际项目中肯定不会这么玩了。

2.2 方案二:Idea工具的Edit Configurations

利用Idea提供的Edit Configurations配置应用参数。

点击Modify Options进行添加应用参数:

开发工具的版本不同,这个界面可能稍微有些区别,但都能找到Program arguments:

说明:

(1)VM options:VM options其实就是我们在程序中需要的运行时环境变量,它需要以-D或-X或-XX开头,每个参数使用空格分隔eg: -Dspring.profiles.active=dev

(2)Program arguments:Program arguments为我们传入main方法的字符串数组args[],它通常以--开头,如--spring.profiles.active=dev; 其等价于-Dspring.profiles.active=dev,如果同时存在,以Program arguments配置优先

然后添加一个--server.port=8081配置:

2.3 方案三:使用RunDashboard

IDEA提供了强大Dashboard功能(运行仪表盘), 可以很好的将上面的多应用启动实例进行管理,使我们配置的项目可视化,方便spring boot项目重新配置、Run、Debug,简化了我们的操作步骤。

在.idea/workspace.xml文件里添加如下配置:

<component name="RunDashboard">  <option name="configurationTypes">    <set>      <option value="SpringBootApplicationConfigurationType" />    </set>  </option></component>

到此再次启动后在底部就可以看到Run Dashboard

在这里可以复制一份配置出来:

这样,就可以启动多个了:

三、同一个端口的两个Spring Boot启动

SpringBoot自带Tomcat,直接运行main方法里面的SpringApplication.run即可,并且访问时不需要带项目名。

如果idea里面有两个SpringBoot项目并且controller层的访问路径一样,并且由于没有路径名,不能同时跑两个main方法,若同时跑两个main方法肯定端口号被占用。那如何同时启动两个项目。

只需要打包成war包,放入Tomcat中而不是SpringBoot自带的Tomcat中即可。那么访问就需要:localhost:8080/项目名/路径 即可解决。在开发工具中的也可以使用外部Tomcat进行启动。具体这些情况,可以查看之前的文章:

关注公众号「SpringBoot」回复关键词[458],查看文章:

《开发工具中SpringBoot使用外置Tomcat启动 (亲测有效)-第458篇》

回复关键词[453],查看文章:

《SpringBoot引入外部jar包,项目打包成war包发布(亲测有效) - 第453篇》

回复关键词[452],查看文章:

《SpringBoot添加外部jar包及打包(亲测有效) - 第452篇》

我就是我,是颜色不一样的烟火。
我就是我,是与众不同的小苹果。

à悟空学院:https://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!

SpringBoot视频:http://t.cn/A6ZagYTi

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

ShardingJDBC分库分表:http://t.cn/A6ZarrqS

分布式事务解决方案:http://t.cn/A6ZaBnIr

JVM内存模型调优实战:http://t.cn/A6wWMVqG

Spring入门到精通:https://t.cn/A6bFcDh4

大话设计模式之爱你:https://dwz.cn/wqO0MAy7

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot提供了多方式来运行多线程。以下是一些常见的编程思路: 1. 实现Runnable接口 创建一个类,实现Runnable接口并重写run()方法。使用Thread类的构造函数将该Runnable对象传递给Thread对象,然后调用start()方法启动线程。 ```java @Component public class MyRunnable implements Runnable { @Override public void run() { // 线程执行的代码 } } // 在需要启动线程的地方调用 MyRunnable myRunnable = new MyRunnable(); Thread thread = new Thread(myRunnable); thread.start(); ``` 2. 继承Thread类 创建一个类,继承Thread类并重写run()方法。实例化该类并调用start()方法启动线程。 ```java @Component public class MyThread extends Thread { @Override public void run() { // 线程执行的代码 } } // 在需要启动线程的地方调用 MyThread myThread = new MyThread(); myThread.start(); ``` 3. 使用线程池 创建一个线程池,将任务提交给线程池执行。Spring Boot提供了ThreadPoolTaskExecutor类来简化线程池的创建和管理。 ```java @Component public class MyService { @Autowired private ThreadPoolTaskExecutor taskExecutor; public void doTask() { taskExecutor.execute(() -> { // 线程执行的代码 }); } } ``` 4. 使用@Async注解 在Spring Boot中,可以使用@Async注解将方法标记为异步执行。Spring Boot会自动创建一个线程池来执行带有@Async注解的方法。 ```java @Component public class MyService { @Async public void doTask() { // 线程执行的代码 } } ``` 需要在启动类上添加@EnableAsync注解开启异步执行功能。 ```java @SpringBootApplication @EnableAsync public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悟纤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值