リソースのライフサイクル管理
必須の依存関係: 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() }
}
}適切なティアダウン(終了処理)を確実にするために、依存関係は宣言された順序とは逆の順序でクリーンアップされます。
