設定 DI 外掛程式
必要的相依性:io.ktor:ktor-server-di
程式碼範例: server-di
您可以在應用程式配置文件中設定 相依注入 (DI) 外掛程式。這些設定會全域影響相依性解析的行為,並套用於所有註冊的相依性。
相依性金鑰對應 (Dependency key mapping)
ktor.di.keyMapping 屬性定義了在解析期間如何將相依性金鑰泛化並進行比對。這決定了在解析請求的型別時,哪些註冊的相依性被視為相容。
yaml
ktor:
di:
keyMapping: Supertypes * Nullables * OutTypeArgumentsSupertypes * RawTypes上述範例符合 DI 外掛程式使用的預設金鑰對應。
可用的金鑰對應選項
DefaultSupertypesNullablesOutTypeArgumentsSupertypesout 型別參數上的共變性。 RawTypesUnnamed@Named)。 組合金鑰對應選項
您可以使用集合運算子 *(交集)、+(聯集)和 ()(圓括號分組)來組合金鑰對應選項。
在以下範例中,註冊為 List<String> 的相依性可以被解析為 Collection<String> (Supertypes)、List 或 List? (RawTypes 和 Nullables):
yaml
ktor:
di:
keyMapping: Supertypes + (Nullables * RawTypes)它將無法解析為 Collection?,因為該組合未包含在運算式中。
衝突解決策略 (Conflict resolution policy)
ktor.di.conflictPolicy 屬性控制當針對同一個相依性金鑰註冊了多個提供者時,DI 容器的行為:
yaml
ktor:
di:
conflictPolicy: Default可用的策略
DefaultOverridePreviousIgnoreConflictsIgnoreConflicts。這允許測試程式碼覆寫生產環境相依性而不會觸發錯誤。 