十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
使用Spring Boot DevTools實(shí)現(xiàn)優(yōu)化開(kāi)發(fā)過(guò)程?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
場(chǎng)景再現(xiàn)
某日少年收到前端同學(xué)發(fā)來(lái)的消息說(shuō)聯(lián)調(diào)的接口響應(yīng)異常,少年表現(xiàn)的很平靜,因?yàn)檫@種事情太平常了。于是詢問(wèn)詳情之后開(kāi)始打開(kāi)自己的代碼查找問(wèn)題所在,沒(méi)過(guò)五分鐘就發(fā)現(xiàn)了問(wèn)題。少年修改完代碼之后將本地啟動(dòng)的項(xiàng)目停止然后再重新啟動(dòng)。由于當(dāng)前的服務(wù)端項(xiàng)目是一個(gè)巨大的單體應(yīng)用,啟動(dòng)需要花三四分鐘時(shí)間,于是少年就拿出手機(jī)開(kāi)始刷起朋友圈。刷著刷著(由于注意力分散不知不覺(jué)花了十幾分鐘)突然意識(shí)到項(xiàng)目已經(jīng)重新啟動(dòng),于是通知前端同學(xué)查看效果。
分析問(wèn)題
上面的場(chǎng)景可能對(duì)很多開(kāi)發(fā)者來(lái)說(shuō)感同身受,在開(kāi)發(fā)中修改項(xiàng)目是很平常且頻繁的一件事情。當(dāng)我們修改完代碼或其他文件的時(shí)候,我們會(huì)重新啟動(dòng)項(xiàng)目來(lái)驗(yàn)證修改是否真的生效(這里忽略我們編寫(xiě)的測(cè)試代碼),以供前端或者其他客戶端來(lái)使用我們的修改。但是不知不覺(jué)這樣的流程浪費(fèi)了我們很多時(shí)間,甚至被迫分散我們的注意力(打開(kāi)社交軟件、看新聞、和同事聊天),這些問(wèn)題對(duì)我們的生產(chǎn)力是一個(gè)極大的威脅。
spring-boot-devtools
能否有一種方案可以讓我們對(duì)項(xiàng)目的修改快速生效,從而節(jié)省那些我們本該可以利用的時(shí)間呢?幸好有一種工具可以解決當(dāng)前所存在的問(wèn)題,這就是**Spring Boot Dev Tools**。
原理簡(jiǎn)介
您可能會(huì)說(shuō),了解Spring Boot Dev Tools的工作原理并不重要,但是由于開(kāi)發(fā)過(guò)程中存在很多復(fù)雜的情況,所以了解Spring Boot Dev Tools的工作原理是對(duì)我們有幫助的。
Spring Boot Dev Tools鉤接(hooks into)到Spring Boot的類(lèi)加載器中,以提供一種方法來(lái)按需重新啟動(dòng)應(yīng)用程序上下文或重新加載已更改的靜態(tài)文件而無(wú)需重新啟動(dòng)整個(gè)應(yīng)用程序。
為此,Spring Boot Dev Tools將劃分應(yīng)用程序的類(lèi)路徑并分配給兩個(gè)不同的類(lèi)加載器:
重新啟動(dòng)應(yīng)用程序后,現(xiàn)有的重新啟動(dòng)類(lèi)加載器將被丟棄,新的重新啟動(dòng)類(lèi)加載器將被啟動(dòng)。這種方法意味著應(yīng)用程序的重啟通常比“冷啟動(dòng)”要快得多,因?yàn)榛绢?lèi)加載器沒(méi)有受到影響并且一直存在著。
引入依賴
當(dāng)我們使用intellij IDEA的Spring Initializr創(chuàng)建項(xiàng)目時(shí),Spring Initializr提供了內(nèi)置的Spring Boot Dev Tools依賴選項(xiàng),我們只需選擇它即可。
Spring Initializr中引入Spring Boot Dev Tools
Maven項(xiàng)目中引入Spring Boot Dev Tools
在項(xiàng)目的pom.xml文件中引入Spring Boot Dev Tools依賴即可
org.springframework.boot spring-boot-devtools runtime true