spring boot热加载for idea
前言
之前在用tomcat作为web服务器时,通过更改idea中的配置"Update classes and resources"即可实现热部署,现在改成spring boot之后发现不行了。热部署对于开发人员来说是个提升开发效率的神器,所以今天决定搞定这个问题!
一、为什么不用spring-devtools?
首先明确一点,为什么不使用spring-devtools。一般热部署都是通过ClassLoader来实现,每次类发生变化时重新加载类信息,具体细节这里不再阐述,可以自行度娘或google,总之上述的操作会给服务器带来额外的开销。所以先明确自己的需求,我的需求就是方便本地开发测试,不用每次都重启,我们要避免其他的依赖延续到线上服务器。而spring-devtools因为需要额外的jar依赖,需要将jar上传的服务器,通过配置"spring.devtools.restart.enabled=false关闭监听,好吧,我是个有强逼症的人
二、其他的方案
还有另外一种方式,通过spring-loaded+maven命令启动,这种方式仔细看下,还不如直接用spring-devtools,果断放弃
三、jrebel的使用
jrebel以插件的形式附着在idea上,不会影响其他的任何环境的任何服务器,符合我们的需求。
1、下载安装
在idea中搜索jrebel插件,点击下载安装即可,如下图:
2、重启idea
这个没什么好说的,重启就好了。友情提示,如果idea在运行着某个服务,建议先手动关闭再重启,否则会等很久(具体啥原因不太了解,猜测idea关闭服务并不是直接kill那么简单吧)
3、激活
jrebel并不是免费的,需要激活一下才可以,如下图:
上面的地址格式是 http://139.199.89.239:1008/{guid} 的形式,其中guid可以通过 https://www.qvdv.com/tools/qvdv-guid.html 来生成;邮箱随便填写一个就好了,会给你发送邮件
4、配置
激活之后需要配置一下jrebel,打开idea的setting,点击jrebel,点击work offline(点击后变成work online),如下图:
5、启动
一切都准备好之后,在ieda原来的启动按钮旁边会多出两个按钮,可以理解为以jrebel的形式启动,这样就可以实现热部署了,如下图:
6、注意
由于使用了破解版,对于一些公司可能有版权的要求限制(比如阿里是不允许使用破解版的软件的),需要自行斟酌。