Springboot自动加载工具-devtools的理解与使用

声明:本文参考自:https://blog.csdn.net/mylovewanzi/article/details/104059933

使用spring-boot-devtools的应用程序将在类路径上的文件发生更改时自动重新启动。

在pom.xml文件中加入一下依赖

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

这里多了一个optional,为true表示项目在打包的时候不会被打包进项目中

此时,只要classpath下的文件发生了变化,项目就会自动重启,这极大的提高了项目的开发速度

要是项目自动编译,idea还需做一些简单的配置。

打开setting,勾选自动构建项目。

 然后按住CTRL+SHIFT+ALT+/,调出如下页面:选择第一个

 然后找到如下,并勾选:

重启IDEA,这是你就可以使用devtools来自动构建项目了。

springboot中自动重启项目的原理:

  springboot中有两个类加载器,一个是basecalssloader,负责项目引用的第三方jar,这类jar有一种特新,就是不会变化;另一个加载器是restartcalssloader,它用来加载自己写的class,这写类是有可能变化的。当项目需要重启时,restartclassloader会被新创建的类加载器替代,而baseclassloader则不会,这要就省去了重新加载第三方jar包的时间,自然启动速度就比冷启动要快。

静态资源文件:
  默认情况下,静态资源文件的修改是不触发项目重启的。当然也不是不能,开发者可以自己定义。
需要在配置文件中添加:

spring.devtools.restart.exclude=static/**

这表示static目录下的静态资源文件的修改也会触发项目重启。
还有另一种方式,也是同样的效果:

spring.devtools.restart.additional-paths=src/main/resources/static

编码是一个连续的过程,有时候重启太频繁了,不仅浪费电脑性能,也浪费我的宝贵时间。有一个方法可以解决这个问题,就是在你需要重启项目时,修改一个指定的文件,只有这个指定的文件被修改才能触发重启项目,配置如下:

spring.devtools.restart.trigger-file=.trigger-file

其实静态资源文件的修改是没必要重启项目的,devtools默认键入了LiveReload服务器,可以解决静态资源的热部署。只需要在chrome安装livereload插件即可。

 

原文地址:https://www.cnblogs.com/wk-missQ1/p/13206591.html