spring boot实现热部署
说明:使用spring boot开发web项目,一旦修改了界面,即使是很小的修改,也需要重新启动应用,所以spring给我们开发者提供了一个模块(spring-boot-devtools)来支持热部署,使我们在改变代码时无需手动重启应用
原理:
springboot 重启是 reload 重启,通过监控 classpath 的变化,如果 classpath 中的文件发生变化,即触发重启,springboot 通过两个 classpath 来完成 reload,一个 basic classloader 中加载不变的类(第三方Jar包),一个 resatrt classloader 加载 classpath 中的类,重启的时候,restart classloader 中的类丢弃重新加载
引入依赖:
<!--实现热部署的核心依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<!--web开发的核心依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--实现test测试的核心依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--底下三行必须加上,否则热部署不起作用-->
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
使用:
当添加以上资源后,idea默认是不会自动编译的,需要我们自己手动编译,快捷键 ctrl+F9,可以重新编译