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

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第21天,点击查看活动详情

介绍

何为热部署(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配置项:

img

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

扫描二维码关注公众号,回复: 14503970 查看本文章

img

img

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

img

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

注意事项

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

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

猜你喜欢

转载自juejin.im/post/7136585063894319135
今日推荐