当前位置:   article > 正文

IntelliJ IDEA 热加载(Hot Swap)_idea hot swap

idea hot swap


所有的热加载都是在 debug 模式下的

一、IntelliJ IDEA 自带热加载

  1. 使用方法:Ctrl + F9
  2. 缺点:只支持 构造代码块方法内部资源文件 的修改

二、IntelliJ IDEA Spring boot devtools

1. 简介

       spring-boot-devtools 是一个为开发者服务的模块,其中最重要的功能就是自动部署新代码

2. 原理

       使用了两个 ClassLoader ,一个 ClassLoader 用来加载那些不会变的类(如:第三方Jar包),另一个 ClassLoader 加载会更改的类,称为 restart ClassLoader,这样在有代码更改时,原来的 restart ClassLoader 被丢弃,重新创建一个 restart ClassLoader。如此一来,由于需要加载的类比较少,所以实现了较快的重启。

3. 发生时机

       devtools 会监听 classpath 下的文件变动,并会立即重启应用

4. 配置热部署

  • IDEA make 配置:CTRL + SHIFT + A --> 查找 make project automatically --> 选中
    在这里插入图片描述
  • IDEA Registry 配置:CTRL + SHIFT + A --> 查找 Registry --> 找到并勾选 compiler.automake.allow.when.app.running
    在这里插入图片描述
    重启idea 重启idea 重启idea 重启idea
  • maven 配置
	<dependency>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-devtools</artifactId>
	    <optional>true</optional>
	</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
	<build>
	    <plugins>
	        <plugin>
	            <groupId>org.springframework.boot</groupId>
	            <artifactId>spring-boot-maven-plugin</artifactId>
	            <configuration>
	                <fork>true</fork>
	            </configuration>
	        </plugin>
	    </plugins>
	</build>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • Chrome 禁用缓存:F12 --> NetWork --> Disable Cache(while DevTools is open)
    在这里插入图片描述

5. 缺点

  • 如果设置 SpringApplication.setRegisterShutdownHook(false),则自动重启将不起作用
  • 这种热加载比较全面,资源文件、代码的修改都可以监听到,但 有些情况下也会有问题
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/323332
推荐阅读
相关标签
  

闽ICP备14008679号