可注入的Macwire工厂

3

我正在研究MacWire进行依赖注入。

在Guice中,我发现辅助注入非常有用,可以自动装配一个工厂,帮助您创建需要运行参数的某些服务。

那么,在MacWire中是否有类似的功能呢?

1个回答

2
可注入工厂得到支持,但并不是 MacWire 的特性,更多的是在 MacWire 的理念中,你可以“只使用 Scala”来实现。在这种情况下,你可以使用函数类型。按照 Guice 的示例,假设你想创建一个由 startDate: Date 和 amount: Money 参数化的 Payment,你可以定义一个依赖项:
val paymentFactory = (startDate: Date, amount: Money) => wire[Payment] 
                     // or create the payment in any other way

然后将其用作普通依赖项:

class ServiceUsingPayment(paymentFactory: (Date, Money) => Payment)
val serviceUsingPayment = wire[ServiceUsingPayment]

您还可以使用类型别名来避免重复函数签名,并在声明另一个服务的依赖项时使用该别名(如上面的ServiceUsingPayment中所示):
type PaymentFactory = (Date, Money) => Payment

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接