SpringBoot 在IDEA中實現熱部署(實用版)


在實際的項目開發過中,當我們修改了某個java類文件時,需要手動重新編譯、然后重新啟動程序的,整個過程比較麻煩,特別是項目啟動慢的時候,更是影響開發效率。其實Spring Boot的項目碰到這種情況,同樣也同樣需要經歷重新編譯、重新啟動程序的過程。 只不過 Spring Boot 提供了一個spring-boot-devtools的模塊,使得 Spring Boot應用支持熱部署,無需手動重啟Spring Boot應用,,提高開發者的開發效率
一、原理
devtools 使用了兩個類加載器(ClassLoader),一個是 Base類加載器(base classloader ):加載那些不會改變的類,如:第三方Jar包等,而另一個是 Restart類加載器(restart classloader):負責加載那些正在開發的會改變的類。這樣在有代碼更改的時候,因為重啟的時候只是加載了在開發的Class類,沒有重新加載第三方的jar包,所以實現了較快的重啟時間。
devtools 監聽classpath下的文件變動(發生在保存時機),並且會立即重啟應用。從而實現類文件和屬性文件的熱部署。
二、快速配置
1、pom配置
引入devtools的依賴

org.springframework.boot
spring-boot-devtools

true

注意:optional=true, 依賴不會傳遞, 該項目依賴devtools;之后依賴boot項目的項目如果想要使用devtools, 需要重新引入。
2、application.properties配置
在application.properties中配置devtools。

關閉緩存即時刷新

spring.thymeleaf.cache=false

熱部署生效

spring.devtools.restart.enabled=true

設置重啟的目錄

spring.devtools.restart.additional-paths=src/main/java

classpath目錄下的WEB-INF文件夾內容修改不重啟

spring.devtools.restart.exclude=WEB-INF/**
說明:
devtools可以實現頁面熱部署,即頁面修改后會立即生效,需要將application.properties文件中配置spring.thymeleaf.cache=false。
devtools會監聽classpath下的文件變動,並且會立即重啟應用。
3、IDEA配置
如果idea是新安裝的或者之前就沒有配置過,發現改變代碼項目熱部署不成功。當我們修改了Java類后,IDEA默認是不自動編譯的,而spring-boot-devtools又是監測classpath下的文件發生變化才會重啟應用。
所以需要設置IDEA的自動編譯:
(1)File-Settings-Compiler-Build Project automatically
(2)ctrl + shift + alt + /,選擇Registry,勾上 Compiler autoMake allow when app running 
這樣,就可以使用devtools實現熱部署了。

好的熱部署讓開發調試事半功倍,這樣的“神技能”怎么能錯過呢, 使用過IDEA的童鞋趕緊進來擼一把吧。 https://www.jianshu.com/p/f658fed35786

學習目標

快速學會在項目中使用熱部署插件運行項目,提高開發效率。

快速查閱

相關教程: IDEA快速入門教程(2018圖文版)

專題閱讀:《SpringBoot 布道系列》

具體步驟

一、開啟IDEA的自動編譯(靜態)

具體步驟:打開頂部工具欄 File -> Settings -> Default Settings -> Build -> Compiler 然后勾選 Build project automatically 。

二、開啟IDEA的自動編譯(動態)

具體步驟:同時按住 Ctrl + Shift + Alt + / 然后進入Registry ,勾選自動編譯並調整延時參數。

  • compiler.automake.allow.when.app.running -> 自動編譯
  • compile.document.save.trigger.delay -> 自動更新文件

PS:網上極少有人提到compile.document.save.trigger.delay 它主要是針對靜態文件如JS CSS的更新,將延遲時間減少后,直接按F5刷新頁面就能看到效果!

三、開啟IDEA的熱部署策略(非常重要)

具體步驟:頂部菜單- >Edit Configurations->SpringBoot插件->目標項目->勾選熱更新。

image.png

四、在項目添加熱部署插件(可選)

溫馨提示:
如果因為舊項目十分臃腫,導致每次都自動熱重啟很慢而影響開發效率,筆者建議直接在POM移除spring-boot-devtools依賴,然后使用Control+Shift+F9進行手工免啟動快速更新!!

具體步驟:在POM文件添加熱部署插件

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
        </dependency>

五、關閉瀏覽器緩存(重要)

打開谷歌瀏覽器,打開F12的Network選項欄,然后勾選【✅】Disable cache 。

熱部署到底有多爽呢,用渣渣輝的話來說,只需體驗三分鍾,你就會干我一樣,愛上這款呦西。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM