IDEA环境下的热加载与热部署

devtools实现热加载

1.引入devtools的maven依赖

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

spring-boot-devtools从名称就可以看出来,是开发者工具包,其主要的功能就是实现热加载。其实现原理就是两个ClassLoader,一个负责加载那些不会经常改变的文件,比如:第三方jar包;一个负责加载可能经常改变的类,比如我们自己在项目中写的代码,被称为restart ClassLoader。当有代码发生改变的时候,重建一个restart ClassLoader,原有的restart ClassLoader被丢掉。由于每次重新加载的内容较少,所以速度比手动重启更快一些。

<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>

2.设置IDEA

运行时编译配置:组合键:“Shift+Ctrl+Alt+/” ,选择 “Registry” ,选中打勾 “compiler.automake.allow.when.app.running” 。

image.png
image.png

自动化编译配置: “File” -> “Settings” -> “Build,Execution,Deplyment” -> “Compiler”,选中打勾 “Build project automatically” 。这是一种重新自动化的编译整体项目的方法。

image.png

3.进行一下application.yml配置

在有些版本我们需要配置热加载生效的开关,使其值等于true。下文是properties格式配置,喜欢yml格式的同学可以自行调整一下。默认情况下,支持热加载的目录如下,如果需要其它目录下文件支持热加载需要手动配置:

/META-INF/maven
/META-INF/resources
/resources
/static
/public
/templates

spring:
  devtools:
    restart:
      enabled: true  #热加载生效
      additional-paths: src/main/java  #额外新增的热加载目录
      additional-exclude:  #热加载排除目录
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容