[有书共读16]第五章-热部署
热部署
表面上:就是你引用spring-boot-devtools后,会自动侦测到你的代码变化,重启服务器。但是这个过程会比你手工重启服务器要快得多得多得多……。
深层实现原理:通过两个ClassLoader,一个用来加载相对固定的classes(static class loader),一个用来加载你开发中的classes(restart ClassLoader)。
graph TD
A(热部署)-->|外部jar包|B[static class loader]
A-->|你的java代码|C[restart ClassLoader]
B-->D[你的代码有变化这个不用重新创建]
C-->E(你的代码变了后会重启restart ClassLoader)
在pom文件中添加依赖
<!-- Spring Boot spring-boot-devtools 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
添加maven plugins
<!-- 添加spring-boot-maven-plugin -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- 如果没有该项配置,devtools不会起作用,即应用不会restart -->
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
以上代码写完后,就可以随意编辑代码测试啦。
书中代码:devtoolstest
如果想让前端模板也热部署,则需要在application.properties中加入:
spring.thymeleaf.***=false
如果发现你的Eclipse不能热部署,那么检查你的自动编译是否打开喽。
Build Automatically