Macwire可注射工厂

马特·德蒙

我正在嘲笑MacWire进行依赖项注入。

我发现对Guice有用的一件事是辅助注入,它可以自动连线工厂,这将帮助您创建一些需要运行参数的服务。

Macwire有类似的东西吗?

亚当

支持可注射工厂,但实际上并不是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

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章