§ Doc 6.8.3 Automatic Restart
Applications that use spring-boot-devtools automatically restart whenever files on the classpath change. This can be a useful feature when working in an IDE, as it gives a very fast feedback loop for code changes. By default, any entry on the classpath that points to a directory is monitored for changes. Note that certain resources, such as static assets and view templates, do not need to restart the application.
採用 spring-boot-devtools 的 application 當 classpath 上的東西有改動的時候,會自動重啟。
預設classpath 上方的每一個元件(entry) 都會被監控有無變化。注意 特定資源的改變不應該重啟應用,例如說靜態資源或是view templates( 這裡指前一日提到的模板引擎)。
§ Doc 6.8.3 Automatic Restart:Exclude Resources
Certain resources do not necessarily need to trigger a restart when they are changed. For example, Thymeleaf templates can be edited in-place. By default, changing resources in /META-INF/maven, /META-INF/resources, /resources, /static, /public, or /templates does not trigger a restart but does trigger a live reload. If you want to customize these exclusions, you can use the spring.devtools.restart.exclude property. For example, to exclude only /static and /publ/ic you would set the following property:
這裡提到的幾個 classpath 目錄之下的資料夾,不應該重啟(restart) application,但會觸發 live reload 。 什麼是 live reload ? 如果有接觸過前端的人,或許在安裝 IDE 套件有安裝過,用途在於更改 html、css 等之類的時候,是一款會自動刷新網頁的套件。
下方是寫在application.yml 的註冊訊息,告知 devtool ,只排除 /static 還有 /public 的資料夾若有變更不去重啟 application,覆蓋原本的 META-INF/maven, /META-INF/resources, /resources, /static, /public
spring:
devtools:
restart:
exclude: "static/**,public/**"
§ Doc 6.8.4 Live Reload
spring-boot-devtools 內建是有 livereload,如果想要在 application 啟動之時關閉 livereload ,
可以透過下方指令:
spring:
devtools:
livereload:
enabled: false
Doc 6.8.3 這裡有提到一個 /META-INF/maven 和 /META-INF/resources ,如果現在單純用 spring intializer 去起一個 spring-boot 專案的話, 還看不到這個資料夾。
這個資料夾,META-INF (meta information) 是一個訊息包,用來配置應用程序、擴展程序、類加載器和服務 manifest.mf 文件,這個資料夾是在構建和打包 jar 包的時候會自動產生。
參考資料:
Doc 6.8.3 Automatic Restart
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using.devtools.restart
Doc 6.8.4 Live Reload
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using.devtools.livereload