不同阶段的依赖注入和IoC

问题描述

我花了大约一天的时间来发现管理Go中依赖项的最佳方法。我读过许多有关以下内容文章

  • go.uber.org/fx
  • go.uber.org/dig
  • github.com/google/wire
  • github.com/elliotchance/dingo
  • github.com/sarulabs/dingo
  • 还有更多...

所有这些函数几乎都执行相同的操作(但是使用不同的方法),并且看起来主要目的是-使main()函数更小。它们不能解决我的需求,即返回所需的接口取决于我的环境。但是我希望有不同个实例,具体取决于我的环境

例如,对于开发来说,我需要一个本地文件系统作为存储,但是对于生产而言,应该从依赖项管理器中返回S3适配器。

一个示例是电子邮件适配器:出于本地目的,将其记录在日志中,用于登台/演示,我想在Slack中获取它,但是对于生产,我希望发送一个真实的使用某些提供商发送电子邮件

是否可以避免手动编写条件(一长串if)并使用当前环境动态获取它?我想拆分所有这些基础结构代码,并将其留给依赖项管理器来决定应返回什么。

我将不胜感激,因为我现在陷入困境,并且只有一个想法来手动编写条件。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)