讀古今文學網 > Spring Boot實戰 > A.1 自動重啟 >

A.1 自動重啟

在激活了開發者工具後,Classpath裡對文件做任何修改都會觸發應用程序重啟。為了讓重啟速度夠快,不會修改的類(比如第三方JAR文件裡的類)都加載到了基礎類加載器裡,而應用程序的代碼則會加載到一個單獨的重啟類加載器裡。檢測到變更時,只有重啟類加載器重啟。

有些Classpath裡的資源變更後不需要重啟應用程序。像Thymeleaf這樣的視圖模板可以直接編輯,不用重啟應用程序。在/static或/public裡的靜態資源也不用重啟應用程序,所以Spring Boot開發者工具會在重啟時排除掉如下目錄:/META-INF/resources、/resources、/static、/public和/templates。

可以設置spring.devtools.restart.exclude屬性來覆蓋默認的重啟排除目錄。例如,你只排除/static和/templates目錄,可以像這樣設置spring.devtools.restart. exclude

spring:
  devtools:
    restart:
      exclude: /static/**,/templates/**

  

另一方面,如果想徹底關閉自動重啟,可以將spring.devtools.restart.enabled設置為false

spring:
  devtools:
    restart:
      enabled: false

  

另外,還可以設置一個觸發文件,必須修改這個文件才能觸發重啟。例如,在修改名為.trigger的文件前你都不希望執行重啟,那麼你只需像這樣設置spring.devtools.restart.triggerfile屬性:

spring:
  devtools:
    restart:
      trigger-file: .trigger

  

如果你的IDE會連續編譯修改的文件,那觸發文件還是很有用的。沒有觸發文件的話,每次變更都會觸發重啟。有觸發文件,就能保證只有你想重啟時才會發生重啟(修改觸發文件即可)。