自動重新載入 (Auto-reload)
自動重新載入 (Auto-reload)
在開發過程中
重新啟動
伺服器可能會耗費不少時間。 Ktor 允許您透過使用 自動重新載入 (Auto-reload) 來克服此限制,它會在程式碼變更時重新載入應用程式類別,並提供快速的回饋循環。 要使用自動重新載入,請遵循以下步驟: 了解如何執行伺服器端 Ktor 應用程式。
(選用) 配置監控路徑
限制
自動重新載入僅適用於特定的模組宣告。下表顯示了不同版本的支援情況:| 模組類型 | <= 3.2 | > 3.2 |
| Lambda 初始設定式 | ❌ 不支援 | ❌ 不支援 |
| 阻塞函式參考 (Blocking function reference) | ✅ 已支援 | ❌ 不支援 |
| 掛起函式參考 (Suspend function reference) | ❌ 不支援 | ✅ 已支援 |
| 組態參考 (Config reference) | ✅ 已支援 | ✅ 已支援 |
啟用開發模式
要使用自動重新載入,您需要先啟用 開發模式。 這取決於您
建立並執行伺服器
的方式: 了解如何根據您的應用程式部署需求建立伺服器。
如果您使用
EngineMain來執行伺服器,請在 組態檔 中啟用開發模式。如果您使用
embeddedServer執行伺服器,可以使用io.ktor.development系統屬性。
啟用開發模式後,Ktor 將會自動監控工作目錄中的輸出檔案。 如有需要,您可以透過指定 監控路徑 來縮小監控資料夾的範圍。
配置監控路徑
當您 啟用 開發模式時, Ktor 會開始監控工作目錄中的輸出檔案。 例如,對於使用 Gradle 組建的 ktor-sample 專案,將會監控以下資料夾:
監控路徑允許您縮小監控資料夾的範圍。 為此,您可以指定監控路徑的一部分。 例如,要監控 ktor-sample/build/classes 子資料夾中的變更, 請將 classes 作為監控路徑傳遞。 根據您執行伺服器的方式,您可以透過以下方式指定監控路徑:
在 application.conf 或 application.yaml 檔案中,指定
watch選項:yaml您也可以指定多個監控路徑,例如:
yaml您可以在此處找到完整的範例: autoreload-engine-main。
如果您使用的是
embeddedServer,請將監控路徑作為watchPaths參數傳遞:Kotlin完整範例請參閱 autoreload-embedded-server 。
