1. 程式人生 > 程式設計 >spring-boot中使用spring-boot-devtools的實現程式碼

spring-boot中使用spring-boot-devtools的實現程式碼

1. 什麼是 spring-boot-devtools

spring-boot-devtools 是 spring-boot專案開發時的一個熱部署工具,安裝了 spring-boot-devtools 依賴,我們在修改原始碼後無需 mvn spring-boot:run 手動重啟spring-boot專案,spring-boot-devtools 會自動幫我們重新啟動專案。
預設情況下,spring-boot-devtools 會檢測 專案資料夾的類路徑上的所有檔案。注意,某些資源(如靜態資產和檢視模板)不需要重新啟動專案。

2. spring-boot:run 的使用:

首先,要在pom.xml檔案中配置依賴

<!--自動重啟 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-devtools</artifactId>
</dependency>

配置好依賴後,執行專案的時候就會自動下載spring-boot-devtools 工具包,當我們對專案路徑下的檔案進行了修改,點選儲存,就會觸發重啟。

注意,預設情況下,更改/META-INF/maven、/META-INF/resources、 /resources、/static、/public 不會觸發重啟。

如果想設定這些排除,可以在 applcation.properties檔案中設定spring.devtools.restart.exclude。
例如,僅排除/static 和 /public 下的所有檔案:

spring.devtools.restart.exclude=static/**,public/**

3. 如何禁用重啟?

1)在application.properties中設定

spring.devtools.restart.enabled=false

2)完全禁用重新啟動支援,需要設定spring.devtools.restart.enabled系統屬性

public static void main(String[] args) {
  System.setProperty("spring.devtools.restart.enabled","false");
  SpringApplication.run(MyApp.class,args);
}

注意踩坑:

之前使用eclipse做 spring-boot 做一個web專案的時候,配置了 spring-boot-devtools 依賴,第一次開啟專案執行沒有問題,然後習慣性的關閉專案去修改程式碼,修改完程式碼點選啟動專案,報錯:埠號被佔用。

這個錯誤在學習web的時候如果操作失誤,是最常見的錯誤之一,一般只要關閉了還在開啟狀態的tomcat就可以解決。
在使用spring-boot配置的web專案中,需要配置 spring-boot-web 依賴,這個依賴中內建有一個tomcat,所以在正常情況下,我們直接關閉專案是會自動關閉tomcat的,但在這裡居然報錯!

然後網上搜了半天,發現是 spring-boot-devtools 的問題,嘗試禁用熱部署,發現還是不行(可能是我環境問題,網上看有的人是成功了的)。這時候只能開啟終端,輸入:netstat -aon|findstr "8080" 檢視正在佔用8080埠的程序id(pid),然後開啟工作管理員,關閉這個程序(或者直接在終端中輸入命令關閉:taskkill /pid 4484 -f4484是佔用8080埠的pid號)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。