【发布时间】:2019-12-18 02:10:18
【问题描述】:
在ZIO中,我们为环境提供了初始Traits:
program.provide(
new Console.Live with MyComponent {}
)
我想做的是从配置文件动态注入MyComponent - 模拟Guice 模块。
这个Blog描述了整个场景。
我可以注入一个依赖项,然后像这样创建环境:
program.provide(
new Console.Live with Components.Live {
def compsService: Components.Service[Console] = service
}
)
service 的注入位置。
这可行,但有一个很大的缺点:我们必须为所有服务实现定义环境。因此,例如如果其中一个想要使用Random,这是不可能的,因为我们只提供Console。
有没有替代方案?
【问题讨论】:
-
跟ZIO有什么关系?