场景

热部署就是当应用程序正在运行的时候升级软件或修改某一部分代码、配置文件时,无需重新启动应用,即可使升级的软件和修改后的代码、配置文件生效。

原理

使用两个ClassLoader,一个Classloader加载那些不会改变的类(第三方jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader。这样在有代码更改时,原来的restart ClassLoader被丢弃,重新创建一个restart ClassLoader。

注:

关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

1、项目中添加devtools依赖

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

2、pom文件中添加maven插件

<build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <configuration>
          <fork>true</fork>
          <addResources>true</addResources>
        </configuration>
      </plugin>
    </plugins>
  </build>

3、IDEA中设置开启自动编译

IDEA中使用devtools配置Maven项目热部署_spring

4、快捷键ctrl+shift+alt+/ 打开Registry页面

IDEA中使用devtools配置Maven项目热部署_spring_02

勾选compiler.automake.allow.when.app.running选项

IDEA中使用devtools配置Maven项目热部署_maven_03

再勾选actionSystem.assertFocusAccessFromEdt选项

IDEA中使用devtools配置Maven项目热部署_intellij-idea_04

5、重启IDEA测试效果

IDEA中使用devtools配置Maven项目热部署_配置文件_05