SpringBoot配置devtools实现热部署
spring为开发者提供了⼀个名为spring-boot-devtools的模块来使Spring Boot应⽤⽀持热部署,提⾼开发者的开发效率,⽆需⼿动重启Spring Boot应⽤。
devtools的原理
深层原理是使⽤了两个ClassLoader,⼀个Classloader加载那些不会改变的类(第三⽅Jar包),另⼀个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建⼀个restart ClassLoader,由于需要加载的类相⽐较少,所以实现了较快的重启时间。
使⽤需要添加以下的配置:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
springframework jar包下载<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
说明:
(1) devtools可以实现页⾯热部署(即页⾯修改后会⽴即⽣效,这个可以直接在application.properties⽂件中配置
spring.thymeleaf.cache=false来实现),
实现类⽂件热部署(类⽂件修改后不会⽴即⽣效),实现对属性⽂件的热部署。
即devtools会监听classpath下的⽂件变动,并且会⽴即重启应⽤(发⽣在保存时机),注意:因为其采⽤的虚拟机机制,该项重启是很快的(2)配置了true后在修改java⽂件后也就⽀持了热启动,不过这种⽅式是属于项⽬重启(速度⽐较快的项⽬重启),会清空session中的值,也就是如果有⽤户登陆的话,项⽬重启后需要重新登陆。
默认情况下,/META-INF/maven,/META-INF/resources,/resources,/static,/templates,/public这些⽂件夹下的⽂件修改不会使应⽤重启,但是会重新加载(devtools内嵌了⼀个LiveReload server,当资源发⽣改变时,浏览器刷新)。
devtools的配置
在application.properties中配置abled=false,此时restart类加载器还会初始化,但不会监视⽂件更新。
在SprintApplication.run之前调⽤System.setProperty(“abled”, “false”);可以完全关闭重启⽀持,配置内容:
#热部署⽣效
abled: true
#设置重启的⽬录
#start.additional-paths: src/main/java
#classpath⽬录下的WEB-INF⽂件夹内容修改不重启
lude: WEB-INF/**
IDEA配置
当我们修改了Java类后,IDEA默认是不⾃动编译的,⽽spring-boot-devtools⼜是监测classpath下的⽂
件发⽣变化才会重启应⽤,所以需要设置IDEA的⾃动编译:
(1)File-Settings-Compiler-Build Project automatically
(2)ctrl + shift + alt + /,选择Registry,勾上 Compiler autoMake allow when app running
测试
修改类–>保存:应⽤会重启
修改配置⽂件–>保存:应⽤会重启
修改页⾯–>保存:应⽤不会重启,但会重新加载,页⾯会刷新(原理是将spring.thymeleaf.cache设为false,参考:Spring Boot配置模板引擎)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。