javascript
SpringBoot官方热部署和远程调试神器,真带劲!
平時(shí)使用SpringBoot開發(fā)應(yīng)用時(shí),修改代碼后需要重新啟動(dòng)才能生效。如果你的應(yīng)用足夠大的話,啟動(dòng)可能需要好幾分鐘。有沒有什么辦法可以加速啟動(dòng)過程,讓我們開發(fā)應(yīng)用代碼更高效呢?今天給大家推薦一款SpringBoot官方的熱部署工具spring-boot-devtools,修改完代碼后可快速自動(dòng)重啟應(yīng)用!
spring-boot-devtools簡(jiǎn)介
SpringBoot官方開發(fā)工具,如果你的應(yīng)用集成了它,即可實(shí)現(xiàn)熱部署和遠(yuǎn)程調(diào)試。
實(shí)現(xiàn)原理
使用該工具應(yīng)用為什么啟動(dòng)更快了?主要是因?yàn)樗褂昧藘煞N不同的類加載器。基礎(chǔ)類加載器用于加載不會(huì)改變的類(比如第三方庫中的類),重啟類加載器用于加載你應(yīng)用程序中的類。當(dāng)應(yīng)用程序啟動(dòng)時(shí),重啟類加載器中的類將會(huì)被替換掉,這就意味著重啟將比冷啟動(dòng)更快!
熱部署
接下來我們將集成devtools,來演示下熱部署功能。
首先需要在項(xiàng)目的pom.xml文件中,添加devtools的依賴;
為了方便測(cè)試,我們?cè)陧?xiàng)目中添加了如下測(cè)試接口;
然后啟動(dòng)項(xiàng)目,啟動(dòng)成功后通過Swagger訪問接口,返回結(jié)果如下,訪問地址:http://localhost:8088/swagger-ui.html
由于在項(xiàng)目構(gòu)建時(shí),devtools才會(huì)自動(dòng)重啟項(xiàng)目,而IDEA默認(rèn)并沒有使用自動(dòng)構(gòu)建,此時(shí)我們可以修改應(yīng)用啟動(dòng)配置,設(shè)置當(dāng)IDEA失去焦點(diǎn)時(shí)自動(dòng)構(gòu)建項(xiàng)目;
修改Controller中的代碼,只要修改下message變量即可;
失去焦點(diǎn)后,等待項(xiàng)目自動(dòng)構(gòu)建,此時(shí)訪問接口出現(xiàn)404問題;
由于devtools檢測(cè)時(shí)間和IDEA的編譯所需時(shí)間存在差異,當(dāng)IDEA還沒編譯完成,devtools就已經(jīng)重啟應(yīng)用了,導(dǎo)致了這個(gè)問題,修改application.yml配置文件,添加如下配置即可;
此時(shí)再次訪問測(cè)試接口,顯示內(nèi)容如下,修改后的代碼已經(jīng)被自動(dòng)應(yīng)用了。
遠(yuǎn)程調(diào)試
devtools除了支持熱部署之外,還支持遠(yuǎn)程調(diào)試,接下來我們把應(yīng)用部署到Docker容器中,然后試試遠(yuǎn)程調(diào)試!
由于SpringBoot默認(rèn)打包不會(huì)包含devtools,所以我們需要先修改下pom.xml;
接下來需要application.yml文件,添加devtools的遠(yuǎn)程訪問密碼;
接下來把項(xiàng)目打包成Docker鏡像,然后使用如下命令運(yùn)行起來;
添加一個(gè)啟動(dòng)配置,修改啟動(dòng)類為org.springframework.boot.devtools.RemoteSpringApplication,配置信息具體如下;
啟動(dòng)該配置,控制臺(tái)輸出如下結(jié)果表示遠(yuǎn)程連接成功;
接下來我們?cè)俅涡薷南翪ontroller中的測(cè)試代碼,只要修改下message變量即可;
遠(yuǎn)程調(diào)試如果自動(dòng)構(gòu)建的話會(huì)導(dǎo)致遠(yuǎn)程服務(wù)頻繁重啟,此時(shí)我們可以使用IDEA手動(dòng)構(gòu)建,在項(xiàng)目的右鍵菜單中可以找到構(gòu)建按鈕;
構(gòu)建成功后可以發(fā)現(xiàn)遠(yuǎn)程服務(wù)會(huì)自動(dòng)重啟,并應(yīng)用修改后的代碼,訪問測(cè)試接口返回如下信息;
總結(jié)
雖說使用SpringBoot官方的devtools可以進(jìn)行熱部署,但是這種方式更像是熱重啟,如果你想要更快的熱部署體驗(yàn)的話可以使用JRebel。
往期推薦SpringBoot實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出,好用到爆,POI可以扔掉了!
如何給SpringBoot配置輕松加密?
MyBatis原生批量插入的坑與解決方案!
總結(jié)
以上是生活随笔為你收集整理的SpringBoot官方热部署和远程调试神器,真带劲!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字符串大写转小写库函数_PHP程序无需使
- 下一篇: JavaScript中的If和Else语