前言
在使用springboot进行开发时,因为项目需要,所以动不动都得重启,项目小了还好说,但是项目稍微大点的话,那真是又浪费时间又浪费资源呐,但是由于热部署的存在,让项目重启问题变得如此easy
一、热部署的原理
热部署之所以如此简单,是因为在其底层使用了两个ClassLoader,一个用来加载那些不改变的类,比如说你引入的jar包,另一个用来加载动态的类的被称为restart ClassLoader,这样在代码有变动的时候,会将原来的restart ClassLoader丢弃,重新在new一个restart ClassLoader,由于需要加载的类不是太多,所以实现了较快的重启
二、使用步骤
1.引入依赖
<!-- 热部署模块 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional> <!-- 这个需要为 true 热部署才有效 -->
</dependency>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
2.进行配置
spring.thymeleaf.cache=false
#热部署模块
debug=true
#设置开启热部署
spring.devtools.restart.enabled=true
#页面不加载缓存,修改即时生效
spring.freemarker.cache=false
#设置修改文件后需要重启的目录
spring.devtools.restart.additional-paths=src/main/java
-
注
-
我这上面用了spring.thymeleaf.cache=false 来实现页面热部署,即修改了静态页面后不需要重启项目也能立即生效(默认情况下 /resources,/static,/templates,/public这些文件夹下的文件修改不会使应用重启)
3.IDEA中进行配置
- File-Settings-Compiler-Build Project automatically 进行勾选
- ctrl + shift + alt + / ,选择Registry,勾上 Compiler autoMake allow when app running
4.测试
- 配置完成后重启项目
- 在controller中的任意方法中加上 System.out.println(“测试1”);
- 在项目启动的情况下修改system.out.println中的内容,然后在浏览器刷新后你会发现控制台会打印出来你所修改的内容
三、总结
在学习一个自己不会的知识点时,先去搜索相关的博客,记得一定要多搜几篇,多看几篇,看懂之后自己在敲一遍,然后再把自己敲的过程一步一步写在博客里。