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を使用します。

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

適切なティアダウン(終了処理)を確実にするために、依存関係は宣言された順序とは逆の順序でクリーンアップされます。