dependency-injection - 每个模块都有一个用于 DI 的 XML 配置文件是否有意义?
问题描述
我一直在阅读有关 DI 和组合根的信息。我在文章中读到只有应用程序应该有组合根,而不是库。
但是让我们假设我有一个带有一些接口及其实现的可重用包。我想将该接口绑定到实现。我认为如果用户必须自己做这一切会很麻烦。
在可重用模块中包含一个 XML DI 配置文件是否有意义,它将在组合根中使用和处理?
解决方案
尽管类库不应包含组合根,但您始终可以在库中包含一个工厂,为简单的用例创建默认图。您在库中的类型仍然是公开的,以便高级用户可以以自定义方式组合类型(例如,使用他们的特殊装饰器装饰某些类型)。您包含的工厂也可以参数化以支持多个基本用例。
关于 XML 配置,虽然可行,但在大多数情况下,维护使用 XML 进行 DI 配置的应用程序非常困难,因为一旦在代码中重命名了类型,XML 中的类型名称将不会自动重命名。
推荐阅读
- javascript - 循环遍历对象数组时,如何将对象值推送到新数组中?
- pandas - 仅在满足特定条件后如何将标题行添加到 df.to_csv 输出文件
- c - 使用 c 中只有 1 个条目的递归计算 1 个数组的总和
- javascript - Discord.js Reaction 打印格式问题
- javascript - 带有签名的 4 字节 int 的 protobuf 消息前缀
- vim - 如何让 Vimwiki 显示括号而不生成链接
- expo - 有没有博览会专业人士可以告诉我我做错了什么?(世博会)
- javascript - 如何在 HTML 前端使用 res.data?
- python - 在 Python 中的 2 个图像之间翻转
- python - 从 db Django Rest_framework View 函数中删除用户