DIプラグインの設定
必要な依存関係: io.ktor:ktor-server-di
コード例: server-di
アプリケーション設定ファイルで、依存性注入 (DI) プラグインを設定できます。これらの設定は、依存関係の解決動作にグローバルに影響し、登録されているすべての依存関係に適用されます。
依存関係キーのマッピング
ktor.di.keyMapping プロパティは、解決時に依存関係キーをどのように一般化し、マッチさせるかを定義します。これにより、要求された型を解決する際に、登録されているどの依存関係が互換性があるとみなされるかが決まります。
yaml
ktor:
di:
keyMapping: Supertypes * Nullables * OutTypeArgumentsSupertypes * RawTypes上記の例は、DIプラグインで使用されるデフォルトのキーマッピングに一致します。
利用可能なキーマッピングオプション
DefaultSupertypesNullablesOutTypeArgumentsSupertypesout 型パラメータの共変性(covariance)を許可します。 RawTypesUnnamed@Named)を無視します。 キーマッピングオプションの組み合わせ
集合演算子 *(積集合)、+(和集合)、および ()(グループ化)を使用して、キーマッピングオプションを組み合わせることができます。
次の例では、List<String> として登録された依存関係を、Collection<String>(Supertypes)、List または List?(RawTypes および Nullables)として解決できます。
yaml
ktor:
di:
keyMapping: Supertypes + (Nullables * RawTypes)この組み合わせには含まれていないため、Collection? としては解決されません。
競合解決ポリシー
ktor.di.conflictPolicy プロパティは、同じ依存関係キーに対して複数のプロバイダーが登録された場合のDIコンテナの動作を制御します。
yaml
ktor:
di:
conflictPolicy: Default利用可能なポリシー
DefaultOverridePreviousIgnoreConflictsIgnoreConflicts を使用します。これにより、テストコードがエラーを発生させることなく本番環境の依存関係をオーバーライドできるようになります。 