SpringBoot 项目热部署的3种方式

👉 这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料: 

3e16e0d4e7961d17302538291a11ab64.gif

👉这是一个或许对你有用的开源项目

国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。

功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号、ERP、CRMAI 大模型等等功能:

  • Boot 多模块架构:https://gitee.com/zhijiantianya/ruoyi-vue-pro

  • Cloud 微服务架构:https://gitee.com/zhijiantianya/yudao-cloud

  • 视频教程:https://doc.iocoder.cn

【国内首批】支持 JDK 17/21 + SpringBoot 3.3、JDK 8/11 + Spring Boot 2.7 双版本 

来源:juejin.cn/post/
7378328335036088359


前言

一般我们的项目都会引各种依赖和配置项,项目的启动往往比较耗时。可能 debug 的过程中发现需要修改的地方,改了之后如果每次都重启服务会耗费大量时间,减少摸鱼时间。热部署就是为了解决每次服务都要重启的问题,提升我们工作效率。

常用的热部署方式有3种:

  • SpringBoot Configuration方式;

  • spring-boot-devtool;

  • JRebel。

一起来看下怎么用

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

SpringBoot Configuraion

这是 Idea 给我们提供的热部署方式。

IDEA 官方介绍:

https://www.jetbrains.com/help/idea/updating-applications-on-application-servers.html

我们在工具栏上点开项目,选择 Edit Configuration,弹出下面的界面:

d09806bd5a0fb1a3c1fadb966c6cb70c.jpeg

可以看到在 Running Application Update Policies 下有两个选项:

  • On 'Update' action: 当你选择这个选项时,自动编译和更新操作只有在你显式执行 "Update" 操作时才会触发。显式执行"Update"操作就是通过手动点击【Build Project】时触发。这种方式可以使你完全控制编译和更新的时机,避免频繁的自动更新。(快捷键:Ctrl + F10)

  • On frame deactivation: 当你选择这个时,每当 IntelliJ IDEA 的窗口失去焦点(即你切换到其他应用程序)时,IDE 会自动编译并更新运行中的应用程序。它适合那些需要频繁编译和更新的开发场景。

当两个都选了时,会使用第二种策略,即失去焦点时自动更新。一般大型项目建议使用第一个选项,否则频繁地自动更新会耗费较多资源。

当我们选择 On 'Update' action 时,有几种方式可供选择(不同版本可能展示的有差异),不同选项的作用见 Idea 的备注:

85fad5be46d1225358739ca73e840235.jpeg

一般选择 Update classes and resources,它会编译所有修改的类文件和资源文件。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud

  • 视频教程:https://doc.iocoder.cn/video/

spring-dev-tools

这个工具是依赖 Liveload 服务器实现的,使用了两个类加载器ClassLoader,一个ClassLoader加载不会发生更改的类(第三方jar包),另一个ClassLoader(restart ClassLoader)加载会更改的类(自定义的类)。

使用方式很简单,pom文件中引入依赖即可:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional> <!-- 可以防止将devtools依赖传递到其他模块中 -->
</dependency>

然后也是手动点击【Build Project】即可触发热部署。当然也可以配置 Idea 的自动更新。

JRebel

JRebel是一个 JVM 插件,在 Idea 中可以直接安装,下面是官网的介绍:

JRebel is a JVM plugin that streamlines Java application development by skipping the time-consuming build and redeploy steps. With JRebel, developers can view code changes in real time, preserve application state, and increase coding efficiency.

  • 插件安装 直接搜 JRebel and XRebel 安装即可。

  • 激活,这个网上搜下。

  • 设置增量编译:

652e0ecd38742f7d4d309e91a1a927fe.jpeg
  • double shift,输入 register:

4311c2c4711c54bf33af883980524511.jpeg

使用JRebel启动项目。


欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,长按”或“扫描”下方二维码噢

1c6e7093159ca5d1b44b1d6cc5b5cd58.png

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

0aad738d3a10046f16d30cabc196cd75.png

1d45c03ce15d45fe7c36977ead40c0b0.png32aa00431a496e017e1e6d257c4d6ebb.png996daf8ebc9a53afaec62ace88fc559f.png8e2bc4d3b6abf608eb5ea8504e271ccd.png

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值