Macwire注射工厂

时间:2014-08-23 00:42:14

标签: scala dependency-injection

我戏弄了MacWire的依赖注入。

我发现Guice有用的一件事就是辅助注入,自动装配工厂,帮助你创建一些需要运行参数的服务。

与Macwire有类似的东西吗?

1 个答案:

答案 0 :(得分:2)

支持可注射工厂,但实际上不是MacWire的功能,而是MacWire的精神,你可以使用Scala"。

在这种情况下,您可以使用函数类型。在Guice示例之后,我们假设您要创建PaymentstartDate: Date参数化的amount: Money。您可以定义依赖项:

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