Spring Boot热部署

Spring Boot热部署

1. 什么是热部署?

​热部署就是在应用正在运行的时候升级应用(增加业务或修改bug),却不需要重新启动应用。热部署监听class文件,如果class文件改动了,就会创建一个新的ClassLoader进行加载该文件,Spring Boot通过配置DevTools 工具来实现热部署。

​原理上是使用了两个ClassLoader,一个ClassLoader加载那些不会改变的类(第三方jar包),另一个ClassLoader加载会更改的类,称为restart CLassLoader,这样在代码有改动的时候,原来的restart ClassLoader会被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相对较少,所以启动时间很快。

2. 配置热部署

2.1 导入jar包

 <!-- devTools --><dependency><groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-devtools</artifactId>    <!-- optional=true, 依赖不会传递, 该项目依赖devtools;         之后依赖boot项目的项目如果想要使用devtools, 需要重新引入 -->    <optional>true</optional></dependency><!-- 插件 --><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.3.7.RELEASE</version><configuration><!--  如果没有该配置,热部署的devtools不生效 --><fork>true</fork></configuration></plugin>

2.2 在properties中添加配置

#热部署生效spring.devtools.restart.enabled=true# 设置重启目录,添加目录的文件需要restartspring.devtools.restart.additional-paths=src/main/java# 解决项目自动重新编译后接口报404的问题spring.devtools.restart.poll-interval=3000spring.devtools.restart.quiet-period=1000

2.3 修改idea配置

  • 开启自动编译(勾选 File --> Settings --> Compiler --> Build Project automatically)

  • Registry 属性修改(快捷键 ctrl + shift + alt + / --> 选择Registry --> 勾选Compiler autoMake allow when app running)

3. 测试

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部