likes
comments
collection

【SpringBoot专题】SpringBoot热更新和相关配置

作者站长头像
站长
· 阅读数 15

介绍

何为热部署(hotswap)?

热部署是在不重启 Java 虚拟机的前提下,能自动侦测到 class 文件的变化,更新运行时 class 的行为。

Java 类是通过 Java 虚拟机加载的,某个类的 class 文件在被 classloader 加载后,会生成对应的 Class 对象,之后就可以创建该类的实例。默认的虚拟机行为只会在启动时加载类,如果后期有一个类需要更新的话,单纯替换编译的 class 文件,Java 虚拟机是不会更新正在运行的 class。

本质是JVM运行时字节码替换技术,使用到这种技术的组件还有像阿里巴巴开源的Java 代码诊断工具Arthas等。

热部署工具

在我们开发过程中,因为修改完代码后需要频繁地重启项目,严重拖慢了我们的开发速度。因此开发中经常使用 spring-boot-devtools 依赖开启热部署配置,进行项目的自动更新启动。其他实现热部署的方式还有 Jrebel 插件等,但因为是收费的,我们这里暂不考虑,只实践这种方式:

快速实践

1. 添加依赖配置

1、在pom.xml加入配置

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-devtools</artifactId>
   <optional>true</optional>
</dependency>
<plugin>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-maven-plugin</artifactId>
   <configuration>
      <fork>true</fork>
   </configuration>
</plugin>

2. 修改IDEA配置

在IDEA中打开File->Settings->Compiler配置项:

【SpringBoot专题】SpringBoot热更新和相关配置

按ctrl + shift + alt + /然后选择Registry,勾上这个:

【SpringBoot专题】SpringBoot热更新和相关配置

【SpringBoot专题】SpringBoot热更新和相关配置

IDEA载入配置(run->Edit Configurations):

【SpringBoot专题】SpringBoot热更新和相关配置

大功告成!当启动项目后,更改代码后,项目自动重启并且运行在最新的代码中即说明项目热部署配置成功。

注意事项

spring-boot-devtools 热部署并不能针对所有的修改进行更新,比如修改配置文件和一些其他的配置代码,因此热部署并不是万能的,并且频繁的重启也有利有弊。因此,这种技术的引入也是有代价的,大家权衡后再使用即可~

欢迎点赞关注评论,感谢观看ヾ(◍°∇°◍)ノ゙