idea热部署

参考:https://my.oschina.net/u/3555122/blog/4355953


1 为什么要使用热部署呢?

当我们修改了代码,想在 不重新运行项目的前提下, 就能看到修改后的效果,那么我们就可以使用热部署。这样可以大大提高我们的开发效率,省去重启项目所耗费的时间。

用法: 一般情况下,我们都是在启动debug模式 进行编码开发,当修改代码后,需进行测试时,可以直接快捷键 ctrl + F9 手动的对所有已修改的文件进行编译;;或者使用热部署,当使用了devtools时,devtools就会自动的执行 编译以及重新部署项目的过程(这个过程需要等几秒)。 然后就可以访问到最新修改的内容了。

2 热部署的前提是

热部署的前提是:我们已经设置了IDEA 的自动编译配置。如下图。
在这里插入图片描述

3 方式一:手动触发编译(ctrl+F9:Build project )

在修改了代码之后,可以使用快捷键 ctrl + F9 ,来手动触发重新编译。

Build project原理: 把项目中变动了的.java文件,编译为最新的class文件,,然后,idea就会自动的部署最新的class文件。然后我们就可以访问到最新修改后的内容了。

注意: ctrl + shift + F9,为Rebuild project,与build的区别是,Rebuild project 是重新编译项目中的所有的文件(不管变动过还是没有变动过),而Build project 是只重新编译 那些变动过的.java 为class。因此Build project 耗费的时间更短一些,效率更高。
在这里插入图片描述

4 方式二:使用springboot的热部署插件 devtools

在 pom.xml 中添加如下配置,即可

<!--热部署配置--> 
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
<plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
          <configuration>
              <fork>true</fork>
              <addResources>true</addResources>
          </configuration>
      </plugin>

然后,然后当我们变动了代码之后,过几秒种,idea就会自动的完成编译,以及部署工作。然后我们就能访问到最新的修改过的内容了。

注意:
springboot中热部署的关键原理就是两个不同的classLoader。

  • base classloader :用来加载不会变化的类,如:各种第三方依赖
  • restart classloader:用来加载会变化的类,例如:我们自己写的代码。

springboot的原理就是 当代码发生变化时,base classloader不变,而restart classloader则会被废弃,被另一个新的restart classloader所代替。在整个过程中因为只重新加载了变化的类,所以热部署启动的速度比重新启动项目速度快。

缺点: 默认情况下,Java类发生变化会进行热部署,而静态资源文件变化时,不会进行热部署。可以使用 liveReload

5 几种编译快捷键的辨析:

Build(ctrl+F9):对选定的目标(Project),编译那些被修改的文件;

Rebuild(ctrl+shift+F9):对选定的目标(Project),进行强制性编译,不管目标是否是被修改过。由于 Rebuild 的目标只有 Project,所以 Rebuild 每次花的时间会比较长。

Recompile: 对选定的目标(Java 类文件),进行强制性编译,不管目标是否是被修改过。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值