依存性注入
必須依存関係: io.ktor:ktor-server-di
コード例: server-di
依存性注入(DI)は、コンポーネントが必要とする依存関係を供給するためのデザインパターンです。モジュールが具象実装を直接作成する代わりに抽象に依存するようにし、DIコンテナがランタイムに適したインスタンスを構築して提供する役割を担います。この分離により、結合度が低下し、テストのしやすさが向上します。また、既存のコードを修正することなく、実装の入れ替えや再構成が容易になります。
Ktorは、サービスや設定オブジェクトを一度登録するだけでアプリケーション全体でアクセスできるようにする、組み込みのDIプラグインを提供しています。これらの依存関係は、一貫性のある型安全な方法で、モジュール、プラグイン、ルート、その他のKtorコンポーネントに注入できます。このプラグインはKtorアプリケーションのライフサイクルと統合されており、スコープ設定、構造化された構成、リソースの自動管理をサポートしているため、アプリケーションレベルのサービスの整理とメンテナンスが容易になります。
依存関係の追加
DIを使用するには、ビルドスクリプトに ktor-server-di アーティファクトを含めます。
Ktorにおける依存性注入の仕組み
Ktorにおいて、依存性注入は密接に関連する2つのステップで構成される、単一の統合されたプロセスです。
これらのステップは、単一のDIコンテナによって処理されます。
アプリケーションで依存性注入の使用を開始するには、まず依存関係の登録から始めてください。依存関係が宣言されたら、依存関係の解決に進みます。
サポートされている機能
DIプラグインは、一般的なアプリケーションのニーズをカバーすることを目的としたさまざまな機能をサポートしています。
設定とライフサイクルの動作
DIコンテナの動作は、設定オプションを使用してカスタマイズできます。これらのオプションにより、依存関係キーの一致方法、競合の処理方法、および高度なシナリオにおける解決の動作を制御できます。
設定の詳細については、DIプラグインの設定を参照してください。
リソースのクリーンアップとシャットダウンの動作については、リソースのライフサイクル管理を参照してください。
依存性注入を使用したテスト
DIプラグインはKtorのテストユーティリティと統合されており、テスト環境での依存関係のオーバーライド、設定の読み込み、競合動作の制御をサポートしています。
詳細と例については、依存性注入を使用したテストを参照してください。
