配置 DI 插件
所需依赖项:io.ktor:ktor-server-di
代码示例: server-di
您可以在应用程序配置文件中配置 依赖项注入 (DI) 插件。这些设置会全局影响依赖项解析的行为,并适用于所有已注册的依赖项。
依赖项键映射
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?,因为该组合未包含在表达式中。
冲突解决策略
ktor.di.conflictPolicy 属性控制当为同一个依赖项键注册了多个提供程序时,DI 容器的行为方式:
yaml
ktor:
di:
conflictPolicy: Default可用策略
DefaultOverridePreviousIgnoreConflictsIgnoreConflicts。这允许测试代码覆盖生产依赖项而不会触发错误。 