SpringBoot热部署(一):spring-boot-devtools

spring-boot-devtools

spring-boot-devtools可以使SpringBoot程序在类路径发生变化时,通过自动重启,重新加载类,来达到热部署的效果。接下来我们实践下如何在IDEA中使其自动生效。

第一步:添加包依赖

在你的pom文件中,添加如下依赖。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <!-- 依赖不会传递,之后依赖此项目的项目如果想要使用devtools,需要重新引入 -->
    <optional>true</optional>
</dependency>

第二步:开启自动编译

如下图,将你的IDEA中的首选项配置中的Build project automatically设置为true。意为自动编译你的工程。

在这里插入图片描述

第三步:开启运行时自动编译

1、根据操作系统的不同,我们在IDEA中按下如下对应的快捷键,会出现如下的registry选项:

  • Windows:ctrl + shift + alt + /

  • MAC:command + shift + option + /

在这里插入图片描述

2、点击进入registry选项后,出现如下界面,我们将compiler.automake.allow.when.app.running勾中即可。
在这里插入图片描述

第四步:验证效果

如下图所示,springboot启动的时候,是restartedMain方法启动的,我们可以测试了。

在这里插入图片描述

  1. 我们随便修改一个java类,系统自动重启。
  2. 我们随便修改一个配置文件,系统自动重启。
  3. 是的,一切就是这么简单,我们想要的效果已经具备了。

知识点

  1. 这里的自动启动与我们自己用手点击的重新启动的区别?

    spring-boot-devtools使用了两个ClassLoader:
    
    一个Classloader加载那些不会改变的类(第三方Jar包);
    
    另一个ClassLoader加载会更改的类,称为restart ClassLoader。
    
    这样在有代码更改的时候,原来的restart ClassLoader被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。
    
  2. 某些文件变化,我们不想让其重启,如何配置?

    spring.devtools.restart.exclude: src/main/java/com/test
    
  3. 所有文件变化,我们都不想让其自动重启了,如何配置?

    spring.devtools.restart.enabled: false
    
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值