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() }
  }
}

相依性會依照宣告的相反順序進行清理,以確保正確卸載。