⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 juejin.cn/post/7378328335036088359 「Carybro」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
  4. 新的源码解析文章实时收到通知。每周更新一篇左右。
  5. 认真的源码交流微信群。

前言

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

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

  • SpringBoot Configuration方式;
  • spring-boot-devtool;
  • JRebel。

一起来看下怎么用

SpringBoot Configuraion

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

IDEA 官方介绍:

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

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

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

  • On ‘Update’ action: 当你选择这个选项时,自动编译和更新操作只有在你显式执行 “Update” 操作时才会触发。显式执行”Update”操作就是通过手动点击【Build Project】时触发。这种方式可以使你完全控制编译和更新的时机,避免频繁的自动更新。(快捷键:Ctrl + F10)
  • On frame deactivation: 当你选择这个时,每当 IntelliJ IDEA 的窗口失去焦点(即你切换到其他应用程序)时,IDE 会自动编译并更新运行中的应用程序。它适合那些需要频繁编译和更新的开发场景。

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

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

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

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 安装即可。
  • 激活,这个网上搜下。
  • 设置增量编译:

  • double shift,输入 register:

使用JRebel启动项目。

文章目录
  1. 1. 前言
  2. 2. SpringBoot Configuraion
  3. 3. spring-dev-tools
  4. 4. JRebel