在ZIO中,我们为 Environment 提供了启动Traits:
program.provide(
new Console.Live with MyComponent {}
)
我想做的是MyComponent
从配置文件动态注入 - 模拟Guice模块。
这个博客描述了整个场景。
我可以注入一个依赖项,然后创建环境,如:
program.provide(
new Console.Live with Components.Live {
def compsService: Components.Service[Console] = service
}
)
在哪里service
注入。
这可行,但有一个很大的缺点:我们必须为所有服务实现定义环境。因此,例如,如果其中一个想要使用Random
,这是不可能的,因为我们只提供Console
。
有没有替代方案?