Ceph 节点操作系统调优
532 2023-04-03 04:29:57
热部署就是在应用正在运行的时候升级应用(增加业务或修改bug),却不需要重新启动应用。热部署监听class文件,如果class文件改动了,就会创建一个新的ClassLoader进行加载该文件,Spring Boot通过配置DevTools 工具来实现热部署。
原理上是使用了两个ClassLoader,一个ClassLoader加载那些不会改变的类(第三方jar包),另一个ClassLoader加载会更改的类,称为restart CLassLoader,这样在代码有改动的时候,原来的restart ClassLoader会被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相对较少,所以启动时间很快。
<!-- 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>
#热部署生效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
开启自动编译(勾选 File --> Settings --> Compiler --> Build Project automatically)
Registry 属性修改(快捷键 ctrl + shift + alt + / --> 选择Registry --> 勾选Compiler autoMake allow when app running)