IntelliJ IDEA 热加载(Hot Swap)

IntelliJ IDEA 热加载(Hot Swap)

  • 一、IntelliJ IDEA 自带热加载
  • 二、IntelliJ IDEA Spring boot devtools
    • 1. 简介
    • 2. 原理
    • 3. 发生时机
    • 4. 配置热部署
    • 5. 缺点


所有的热加载都是在 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 --> 选中
    IntelliJ IDEA 热加载(Hot Swap)_第1张图片
  • 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>
	<build>
	    <plugins>
	        <plugin>
	            <groupId>org.springframework.boot</groupId>
	            <artifactId>spring-boot-maven-plugin</artifactId>
	            <configuration>
	                <fork>true</fork>
	            </configuration>
	        </plugin>
	    </plugins>
	</build>
  • Chrome 禁用缓存:F12 --> NetWork --> Disable Cache(while DevTools is open)
    IntelliJ IDEA 热加载(Hot Swap)_第2张图片

5. 缺点

  • 如果设置 SpringApplication.setRegisterShutdownHook(false),则自动重启将不起作用
  • 这种热加载比较全面,资源文件、代码的修改都可以监听到,但 有些情况下也会有问题

你可能感兴趣的:(#,Spring,Boot,intellij,idea)