IDEA 2018.3版本Spring Boot 热部署
看了B站尚硅谷的"尚硅谷SpringCloud框架开发教程(SpringCloudAlibaba微服务分布式架构丨Spring Cloud)"视频的P11,讲热部署,分如下5个步骤:
刚好现在我觉得每次改了代码,要用POSTMAN测试的时候,每次都要重启项目,重启一次耗时大概1分钟左右感觉很慢,所以我尝试了一下:
我的按照老师的步骤,注意第5步有点点不一样;就是版本号,应该没啥大问题;
也确实成功了,但是我发现这不是我想要的"热部署",这devTools只是帮我重启快了一点,我觉得应该不能叫热部署,应该叫热重启;
从控制台输出的这句可以反推推测一下
Started MyApplication in 58.921 seconds (JVM running for 63.162)
当我修改了代码,它会自动帮我重启一下项目:
重启耗时好像变少了一些, JVM running for 数字 ,这个数字越来越大, 可以推测是JVM一直在运行,是热重启,不再是冷重启,所以可能会快一点;
但是我想要的效果不是这样的,我期望我改了代码以后,不用重启就能够更新接口的结果;
于是,又找,找到IDEA 自带的 HotSwap 的帖子
IDEA + Spring Boot 的三种热加载方案,看完弄懂,不用加班~
https://cloud.tencent.com/developer/article/1683029
在这里我总结为以下几步:
1.在Settings里
2.Edit Configurations…
进入以后,选好是哪个微服务
选Update classes and resources
3.然后以Debug运行
这样就可以实现热部署了;
4.修改代码以后,鼠标移到IDEA软件框的外面, 让IDEA失去鼠标的焦点,IDEA就会开始编译,编译完成就会提示如下:有1个类被重新加载
这样速度更快,不需要重启SpringBoot;
我更愿意称这样的HotSwap为热部署, 称用devTools为热重启;
在按尝试尚硅谷视频教程的时候按了快捷键
Ctrl + ALT + Shift + /
和
Ctrl + Shift + ALT + /
都可以
打开的Registry窗口的key我看不懂,鼠标选中后下面的框会有描述
如果想看所有描述有地址: Registry描述
https://github.com/jskierbi/intellij-ce-playground/blob/master/platform/util/resources/misc/registry.properties
HotSwap也不是每次都会成功,如果代码有bug,编译器通不过也会在编译时提示出来;
我这里把一个Controller的映射和方法全删了,也failed了
我放置这个问题在那, 并没有处理,然后过一会,用POSTMAN请求,还是能请求到原来那个映射地址;此时再把鼠标移到IDEA外面去,它又是绿的;显示没有类被改变;这样会显得有点诡异,代码里已经删了的映射,还能请求到;这里要注意避免这个坑!
这个时候重启一下项目比较好!