热部署:在我们在web开发当中不需要将tomcat服务器关闭或者重启,就可以改动源码内容在页面上同步刷新就可以。
在java的类加载机制中,每一个类在执行时都会被类加载器classloader先行加载,之后每一次改动类时,都会使用classloader重新加载。热部署的原理:使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为 restart ClassLoader
,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间(5秒以内)。
在idea中我们经常使用的是3中方式:
1.使用SpringBootLoaded,这种方法只能改变单一的方法中代码的改变才能加载,功能单一。
只要导入SpringBootLoaded的插件包即可,使用maven-springBoot-plugin:run来启动;
2.使用idea自带的工具devtools直接来实现热部署,只需要注入依赖,在plugin中开启重新加载项 目的fork,之后开启application的启动类。
3.使用idea的插件JRebel插件直接启动,也可以完成热部署。