一、spring-boot-devtools 模塊介紹
1、關於 spring-boot-devtools
Spring Boot 使我們能夠快速設置和運行服務。為了進一步增強開發體驗,Spring 發佈了 spring-boot-devtools 工具——作為 Spring Boot-1.3 的一部分
spring-boot-devtools 是 Spring Boot 提供的一組開發工具,可以提高開發者的工作效率,開發者可以將該模塊包含在任何項目中,spring-boot-devtools 最方便的地方莫過於熱部署了。
2、關於熱部署
熱部署一般是指,開發過程中使用開發者不想因為修改內容後重啓服務浪費大量的時間,而是希望修改代碼後能夠快速加載自己修改的方法或者類。節省開發時間,為開發者提供改好的開發體驗。
SpringBoot devtools實現 熱部署説明:
- spring-boot-devtools 熱部署是對修改的類和配置文件進行重新加載,所以在重新加載的過程中會看到項目啓動的過程,其本質上只是對修改類和配置文件的重新加載,所以速度極快;
- spring-boot-devtools 對於前端使用模板引擎的項目,能夠自動禁用緩存,在頁面修改後,只需要刷新瀏覽器器頁面即可;
- Idea 監測到項目 runninng 或者 debuging 會停用自動編譯,所以還需要手動biild [Ctrl + F9] 或者 [ctrl + b]
二、SpringBoot devtools 實戰
1、在項目中添加 Spring-Boot-Devtools
# 在 pom.xml 文件中添加 Maven 依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
optional 選項,是為了防止將 devtools 依賴傳遞到其他模塊中。當開發者將應用打包運行後,devtools 會被自動禁用。spring-boot-devtools 默認將只在開發環境生效,通過 Spring Boot 插件打包時默認是不會包含 spring-boot-devtools。
2、手動編譯
當開發者將 spring-boot-devtools 引入項目後,只要 classpath 路徑下發生變化,項目就會自動重啓,這極大地提高了項目的開發速度。
- 如果開發者使用 Eclipse ,那麼在修改完代碼並保存之後,項目將自動編譯井觸發重啓,而
- 如果開發者使用 IntelliJ IDEA 默認情況下,需要開發者手動編譯才會觸發重啓。手動編譯時,單擊 Build -> Build Project 菜單或者按 Ctrl+F9 快捷鍵進行編譯,編譯成功後就會觸發項目重啓。當然,使用 IntelliJ IDEA 開發者也可以配置項目自動編譯
# 單擊 File -> settings 菜單,打開 settings 頁面,在左邊的菜單欄依次找到 Build,Execution,Deployment -> Compile,勾選 Build project automatically :
# 按住 Ctrl+Shift+Alt+/ 快捷捷鍵調出 Maintenance 頁面
# 選擇 Registry,在新打開的 Registry 頁面中,勾選compiler.automake.allow.when.app.running 複選框。配置完成後,若開發者修改了代碼則將會自動重啓。
Ps:classpath 路徑下的靜態資源或者視圖模板等發生變化時,並不會導致項目重啓。
3、自定義監控資源
默認情況下,/META-INF/maven、/MET A-INF/resources、/resources、/static 、/public 以及 /templates 位置下資源的變化並不會觸發重啓,如果開發者想要對這些位置進行重定義 ,在 application.properties 中添加如下配置即可:
spring.devtools.restart.exclude=static/**
這表示從默認的不觸發重啓的目錄中除去 static 目錄,即 classpat:static 目錄下的資源發生變化時也會導致項目 重啓。用户也可以反向配置需要監控的目錄,配置方式如下:
spring.devtools.restart.additional-exclude=src/main/resources/static
這個配置表示當 src/main/resources/static 目錄下的文件發生變化時,自動重啓項目。
由於項目的編碼過程是一個連續的過程,並不是每修改一行代碼就要重啓項目,這樣不僅浪費電腦性能,而且沒有實際意義。鑑於這種情況,開發者也可以考慮使用觸發文件,觸發文件是個特殊的文件,當這個文件發生變化時項目就會重啓,配置方式如下:
spring.devtools.restart.trigger-file=.trigger-file
在項目 resources 目錄下新建一個名為 .trigger-file 的文件,此時當開發者修改代碼時,默認情況下項目不會重啓,需要項目重啓時,開發者只需要修改 .trigger-file 文件即可,但是注意,如果項目沒有改變,只是單純地改變了 .trigger-file 文件,那麼項目不會重啓。
4、關閉自動重啓功能
如果開發者添加了 spring-boot-devtools 模塊但是不想使用自動重啓特性,那麼可以關閉自動重啓。
spring.devtools.restart.enabled=false