自动重载 (Auto-reload)
自动重载 (Auto-reload)
在开发过程中
重新启动
服务器可能需要一些时间。 Ktor 允许您通过使用自动重载 (Auto-reload)来克服这一限制,它可以在代码更改时重载应用类并提供快速的反馈循环。 要使用自动重载,请遵循以下步骤: 了解如何运行服务器 Ktor 应用程序。
限制
自动重载仅适用于特定的模块声明。下表显示了跨版本的支持情况:| 模块类型 | <= 3.2 | > 3.2 |
| Lambda 初始值设定项 | ❌ 不支持 | ❌ 不支持 |
| 阻塞函数引用 | ✅ 支持 | ❌ 不支持 |
| 挂起函数引用 | ❌ 不支持 | ✅ 支持 |
| 配置引用 | ✅ 支持 | ✅ 支持 |
启用开发模式
要使用自动重载,您需要先启用 开发模式。 这取决于您用于
创建和运行服务器
的方式: 了解如何根据应用部署需求创建服务器。
如果您使用
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 。
