热部署
spring为开发者提供了一个名为spring-boot-devtools的模板来使Spring Boot 应用支持热部署,提高开发者的开发效率,无需手动启动SpringBoot应用。
devtools原理
深层原理是使用了两个ClassLoader,一个ClassLoader加载那些不会改变的类(第三方jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。
pom.xml 添加坐标
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
application.yml配置文件
spring:
devtools:
restart:
enabled: true
开启自动编译
快捷键 ctrl+shift+alt+/,选择Registry,勾上Compiler autoMake allow when app running
注:
完成上述操作,springboot热部署完成,不用再次手动保存,它会自动给你保存,保存后,自动重启项目,这种热部署,可能会导致你在登录成功后,在期间修改了代码,自动重启后,可能会导致session变了。这只是一种方式的热部署,可能只是修改了一点,并不想要重启,推荐使用第二种。
第二种热部署使用方法:
- 修改自动编译
- 修改完代码后手动保存