一,前言
在讲解热部署之前,先来说说为什么会出现这个名词
通常我们在进行软件开发的时候,每次对程序的改动就需要重新启动该程序,这样会影响到整个的开发进度。
所以为了解决这一难题,就出现了所谓的热部署:可以让我们的修改及时生效,从而不需要每次都手动重启程序
二,devtools原理
使用devtools实现热部署,主要是因为其使用了两个类加载,那么为什么要使用两个类加载呢?
问题很简单,其实这里就是为了提高部署效率:
1,选择我们想要进行加载的类,进行加载
通过spring.devtools.restart.additional-paths:src/main/java
意思是,在进行重新加载的时候,只重新加载该目录下的类进行编译
2,选择我们需要进行加载的类,不进行加载
通过spring.devtools.restart.exclude:WEB-INF/**
还有一点,因为该热部署的重启是指虚拟机的重启,其速度也会相比平常的重启快速
三,devtools的配置
该配置主要分为两大步:
- pom和application文件配置
在pom文件中配置对应的依赖文件
<dependency>
<groupId>org.spingframework.boot</groupId>
<aritfactId>spring-boot-devtools</artifactId>
<!--此处使用该optional的作用是,防止依赖传递,若某个项目xx引入了依赖A,A添加了optional=true,那么当其他项目通过POM文件,依赖xx项目的时候,该依赖A不会被传递-->
<optional>true</optional>
</dependency>
在配置文件application.properties中配置:
#清除缓存,及时刷新
sping.thymeleaf.cache:true
#开启热部署生效,允许其重启
spring.devtools.restart.enabled:true
#设置需要热部署的路径
spring.devtools.restart.additional-paths:src/main/java
#设置不需要热部署的路径
spring.devtools.restart.exclude:WEB-INF/**
别以为配置到了这里结束了,别急,还有下面一个步骤,即可完成
- IDEA配置
通常我们即使引入了devtools这个依赖,我们也不能实现热部署,是因为IDEA默认是不进行自动编译的,而spring-tools-devtools是通过监听classpath下的文件内容发生变化的时候才会重启应用,所以我们接下来要做的事情就是设置IDEA的自动编译
File->Settings->Complier->Build Project automatically
即可。
除了这个还有一个快捷键方式Ctrl+Alt+Shift+/—>Registry,选择Complier autoMake allow when app running即可
到这里,我们的dectools热部署就正式完成了,接下来我们只需要在IDEA中进行开发,点击保存,就会触发该热部署进行加载文件