热部署
目录
¶概述
❓什么是热启动?什么是冷启动?
❓什么是热部署?
热部署是在应用正在运行的时候升级软件,却不需要重新启动应用的手段,也有称为热更新、热替换、热加载等等
❓为什么需要热部署
在使用idea
做springboot
项目开发时,每次修改完源代码之后都需要重新启动应用,对于开发而言,非常的麻烦。使用热部署操作后,能够更加方便进行开发,每次修改代码之后都会生效
¶Spring-boot-devtools
spring-boot-devtools
是 Spring Boot 提供的开发者工具,它会监控当前应用所在的 classpath
下的文件发生变化,进行自动重启
其官方文档解释如下:
Spring Boot 通过使用两个类加载器来提供了重启技术,不改变的类(例如,第三方 jar)被加载到 base 类加载器中;经常处于开发状态的类被加载到 restart 类加载器中
✨当应用重启时,restart 类加载器将被丢弃,并重新创建一个新的。这种方式意味着应用重启比冷启动要快得多,因为省去 base 类加载器的处理步骤,并且可以直接使用
¶使用
在项目的 pom.xml
中,引入 spring-boot-devtools
依赖如下
1 | <dependency> |
热部署并不会生效,因为修改了 Java 代码之后,还需要手动/自动重新编译代码,随后更新的类才会被重新加载。spring-boot-devtools 真的不是热部署,而是更快的重启方式
¶自动构建设置
¶Spring-dev-tools 总结
如果因为旧项目十分臃肿,导致每次都自动热重启很慢而影响开发效率,笔者建议直接在 POM 移除spring-boot-devtools
依赖,然后使用Control+Shift+F9
进行手工免启动快速更新!!
¶IDEA 热部署
如果使用 IDEA 工具,完全可以去掉 spring-boot-devtools
依赖,IDEA 提供了 HotSwap 插件,可以实现真正的热部署,如下图所示:
修改代码之后,仍然需要重新编译代码后代码才可以被热交换,以上方式必须以debug
模式启动项目才会生效
¶总结
如果想要完成 Spring Boot 项目的热加载,完全不需要任何依赖,使用 IDEA 自带的更新策略即可,如下图,随后以 DEBUG 方式运行项目就可以做到热加载了