SpringBoot入門筆記12——devtool熱部署的使用
SpringBoot 熱部署實戰
spring為開發者提供了一個名為spring-boot-devtools的模組來使Spring Boot應用支援熱部署,提高開發者的開發效率,無需手動重啟Spring Boot應用。
熱部署的原理
深層原理是使用了兩個ClassLoader,一個Classloader載入那些不會改變的類(第三方Jar包),另一個ClassLoader載入會更改的類,稱為restart ClassLoader,這樣在有程式碼更改的時候,原來的restart ClassLoader 被丟棄,重新建立一個restart ClassLoader,由於需要載入的類相比較少,所以實現了較快的重啟時間。
如何使用devtool
springboot 使用devtool特別簡單,首先看官網的地址
在專案的pom.xml檔案下新增依賴,
//核心依賴包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>
由於DevTools監視類路徑資源,因此觸發重新啟動的唯一方法是更新類路徑。導致更新類路徑的方式取決於您使用的IDE。在eclipse中儲存檔案就會重啟。idea中如果設定自動儲存,每自動儲存一次就會觸發啟動一次。
記錄條件評估中的更改
預設情況下,每次應用程式重新啟動時,都會記錄一個顯示條件評估增量的報告。該報告顯示了在進行更改(例如新增或刪除Bean以及設定配置屬性)時對應用程式的自動配置所做的更改。
要禁用報告的日誌記錄,請設定以下屬性:
spring.devtools.restart.log-condition-evaluation-delta=false
不包括資源(Excluding Resources)
某些資源在更改時不一定需要觸發重啟。例如,可以就地編輯Thymeleaf模板。預設情況下,更改/ META-INF / maven,/ META-INF / resources,/ resources,/ static,/ public或/ templates中的資源不會觸發重新啟動,但會觸發實時重新載入。如果要自定義這些排除項,可以使用spring.devtools.restart.exclude屬性。
例如,要僅排除/ static和/ public,您需要設定以下屬性:
spring.devtools.restart.exclude=static/**,public/**
如果要保留這些預設值並新增其他排除項,請改用spring.devtools.restart.additional-exclude
屬性。
禁用重啟
如果您不想使用重啟功能,可以使用spring.devtools.restart.enabled
屬性將其禁用。在大多數情況下,您可以在application.properties中
設定此屬性(這樣做仍會初始化重新啟動的類載入器,但它不會監視檔案更改)。
如果需要完全禁用重新啟動支援(例如,因為它不能與特定庫一起使用),則需要在呼叫SpringApplication.run(…)之前將spring.devtools.restart.enabled System屬性設定為false,如如下例所示:
public static void main(String[] args) {
System.setProperty("spring.devtools.restart.enabled", "false");
SpringApplication.run(MyApp.class, args);
}
使用觸發器檔案(Using a Trigger File)
這個應該很有用,建立一個觸發器檔案來進行熱部署
如果使用不斷編譯已更改檔案的IDE,則可能更喜歡僅在特定時間觸發重新啟動。為此,您可以使用“觸發器檔案”,這是一個特殊檔案,當您想要實際觸發重新啟動檢查時必須對其進行修改。更改檔案只會觸發檢查,只有在Devtools檢測到必須執行某些操作時才會重新啟動。觸發器檔案可以手動更新,也可以使用IDE外掛更新。
要使用觸發器檔案,請將spring.devtools.restart.trigger-file
屬性設定為觸發器檔案的路徑。
您可能希望將spring.devtools.restart.trigger
檔案設定為全域性設定,以便所有專案的行為方式相同
小結
還有很多功能,還是看官方文件,用到的時候再去查。對於devtool的使用我覺得,使用eclipse 很簡單,ctrl+s就可以了。對於使用Idea 兄弟我覺得使用觸發器檔案是個非常好的方式。
首先在application.properties配置檔案下配置 觸發器檔案的路徑,比如
spring.devtools.restart.trigger-file=trigger.txt
我們在resources資料夾的根目錄建立了一個txt檔案 trigger.txt
裡面內容比如 version=1 其實沒什麼,,只要這個配置檔案更改了,就會觸發devtool去重新檢查啟動。
比如我們更改完我們的程式碼,想使用熱部署,就把1改一下,比如改為2 這個時候就會自動重啟。當然還可以用外掛,自行百度吧