Skip to content

资源生命周期管理

所需依赖项io.ktor:ktor-server-di

代码示例 server-di

依赖注入 (DI) 插件会在应用程序关闭时自动处理生命周期和清理。

AutoCloseable 支持

默认情况下,任何实现 AutoCloseable 的依赖项都会在应用程序停止时自动关闭:

kotlin
class DatabaseConnection : AutoCloseable {
  override fun close() {
    // 关闭连接,释放资源
  }
}

dependencies {
  provide<DatabaseConnection> { DatabaseConnection() }
}

自定义清理逻辑

您可以通过指定 cleanup 函数来定义自定义清理逻辑:

kotlin
dependencies {
  provide<ResourceManager> { ResourceManagerImpl() } cleanup { manager ->
    manager.releaseResources()
  }
}

使用 key 进行作用域清理

使用 key 来管理命名资源及其清理:

kotlin
dependencies {
  key<Closer>("second") {
    provide { CustomCloser() }
    cleanup { it.closeMe() }
  }
}

依赖项按照声明的相反顺序进行清理,以确保正确拆卸。