idea的热加载与热部署
⼀:热加载与热部署
热部署的意思就是不⽤⼿动重启环境,修改类后,项⽬会⾃动重启。但是如果项⽬⽐较⼤,重启也需要耗时⼗⼏秒左右。
热加载意为不需要重新启动,修改了什么⽂件就重新加载什么⽂件,可以做到1,2秒左右就能看到效果。所以更节省时间。
但是⼆者是互有利弊。热部署的好处是,重新启动,不存在修改⽂件和整个环境不⼀致的情况,⽽且是任何修改都⽣效。但是这⾥的热加载却有限制。吾经过测试发现,⾄少在修改controller上⽅法的requestMapping时是不会马上⽣效。因为这个是在启动时就已经加载的,所以这也是热加载修改什么加载什么带来的必然结果。
注:本⼈使⽤的idea版本为2019.3.3
⼆:热部署
热部署⽹上有很多博客,基本可以说是四步。
idea debug1)修改build为⾃动编译
2)允许运⾏时编译:alt+ctrl+shift+/ 调出Registry,选中运⾏时编译
3)添加pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
4)maven编译插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<addResources>true</addResources>
</configuration>
</plugin>
</plugins>
</build>
这种⽅式就是修改后会⾃动重新启动,免去⼿⼯重启。并不能实现不重启⽽⾃动加载修改的类。
三:热加载
要做到热加载需要两步。⼀是编译,⼆是加载。吾经过测试整理出以下:
1)设置⾃动编译,见2.1
2)设置运⾏运⾏时编译,见2.2
3)设置⼿动“update”或者idea失去焦点时更新类与资源
4)以debug⽅式启动
这样就能实现修改了类后,⼿动点击“update" 即idea下⾯的刷新按钮,或者点开另外个程序,idea就会重新去加载更新的类。这时马上就能看到更新效果。(项⽬没有重启,但是会看到idea有⼀个刷新的动作)。这种⽅式的局限性前⽂已有说到。
吾测试时,有以下⼏个坑。
a)当不以debug⽅式启动时,设置允许⾃动编译后,就算反编译类,发现已经更改,就算去⼿动刷新(ctrl+F10)也不会起作⽤。我猜想是因为idea内置缓存的原因。所以必须以debug⽅式启动。
四:结尾
正常的⽅式是,我们在开发⼀个功能后,才需要启动项⽬。或者debug⽅式去调试问题。⾄于说热部署和热加载,哪种更适合你的特殊需要,就格取所好吧!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论