idea的熱載入與熱部署
一:熱載入與熱部署
熱部署的意思就是不用手動重啟環境,修改類後,項目會自動重啟。但是如果項目比較大,重啟也需要耗時十幾秒左右。
熱載入意為不需要重新啟動,修改了什麼文件就重新載入什麼文件,可以做到1,2秒左右就能看到效果。所以更節省時間。
但是二者是互有利弊。熱部署的好處是,重新啟動,不存在修改文件和整個環境不一致的情況,而且是任何修改都生效。但是這裡的熱載入卻有限制。吾經過測試發現,至少在修改controller上方法的requestMapping時是不會馬上生效。因為這個是在啟動時就已經載入的,所以這也是熱載入修改什麼載入什麼帶來的必然結果。
二:熱部署
熱部署網上有很多部落格,基本可以說是四步。
1)修改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方式去調試問題。至於說熱部署和熱載入,哪種更適合你的特殊需要,就格取所好吧!