SpringBoot之如何实现热部署?这你得会 | 超级详细,建议收藏

环境说明:Windows10+idea2021.3.2+jdk1.8+springboot2.3.1.RELEASE

一、前言
想必小伙伴在日常开发中,有遇到这么一件事吧,频繁修改一个业务接口,但为了真实测试,必须要通过页面也定位bug,只能改一步重启一次,就需要频繁重启项目,重新部署,对于一个大型项目而言,重启需要很长时间,目前我这项目重启一次将近20秒,要是这种编码效率,那明天去人事处报道的人应该就是我了,于是我就想到,热部署。

对的,没错,热部署可以替我们节省大把花在重启项目本身上的时间。那对于热部署,大家知道的又有多少呢?

热部署原理上,其实是使用了两个ClassLoader,一个ClassLoader加载哪些不会改变的类,另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样对于代码更改的时候,原来的restart ClassLoader会被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相对比较少,所以实现了快速重启。

二、热部署实现方式
传统上,热部署所知道的实现方式有三种,分别如下:

  • 配置pom.xml文件,使用插件的执行命令mvn spring-boot:run启动项目。

  • 使用springloader本地启动修改jvm参数;-javaagent: -noverify(未实测)

  • 使用devtools工具包,操作简单。

这里主要讲一下第三种方式,也是我所推荐的,因为配置及使用相对简单。我们都知道,热部署也不是万能的,对于某些更改,其实热部署也无法自动重启,还是需要重启,但是针对代码修改而进行自动重启部署,这绝对是美事一件。

接下来我就带着大家配置一下如何在自己的项目中配置热部署。

三、devtools配置

1、引入devtools依赖

在你的pom.xml配置文件中,引入devtools依赖包:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional></dependency>

提示:

设置optional 为true,是避免大家微服务项目父子项目依赖继承冲突。

2、devtools的配置

spring:
  devtools:
    restart:
      enabled: true  #设置开启热部署,false即不开启热部署
      additional-paths: src/main/java #指定热部署的目录
      exclude: test/**  #指定目录不更新

3、Intellij Idea修改
如果你是使用的idea工具开发,那你还需要改以下两个地方:

1、勾上自动编译或者手动重新编译 File -> Setting -> Build, Execution, Deployment -> Compiler:勾选 [Build project automatically]

演示截图如下:
在这里插入图片描述
2、注册 Shift+Ctrl+Alt+/(Windows快捷键), 单击[Registry],勾选 [
compiler.automake.allow.when.app.running]

快捷键:Shift+Ctrl+Alt+/ 后,会弹出如下界面:
在这里插入图片描述
然后单击 Registry,找到 [
compiler.automake.allow.when.app.running]把它勾选上。具体演示如下:
在这里插入图片描述
到此,以上就完成了热部署的所有配置啦,你们记得配置完成后,重启idea!让所有配置都生效。

再次,若想验证热部署是否生效,你们可以做个简单测试(比如随便修改个接口地址啥的,然后用新接口地址去访问,验证修改代码是否在不手动启动项目的情况下生效等),我这里就不给大家演示了。

同时,如下是我从网上看到的一些注意事项,经实测确实如此,也希望大家在使用热部署的同时,也能少走些弯路。

具体如下:

  1. package 打包时,不包含devtools工具。

  2. 生产环境devtools将被禁用,如java -jar方式或者自定义的类加载器等都会识别为生产环境。

  3. devtools会在windows资源管理器占用java进程,在开发工具里面杀不掉,只能手动kill掉,不然重启会选成端口被占用情况。

  4. Thymeleaf无需配置spring.thymeleaf.cache: false,devtools默认会自动设置。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值