我正在调侃MacWire以进行依赖注入。
我在Guice中发现的一件有用的事情是辅助注入,它自动创建一个工厂,它将帮助您创建一些需要运行参数的服务。
有类似的东西吗?
发布于 2014-09-13 23:54:33
支持可注射工厂,但实际上并不是MacWire的一个特性,而是按照MacWire的精神,您可以“只使用Scala”。
在这种情况下,您可以使用函数类型。按照Guice示例,假设您希望创建一个由Payment和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) => Paymenthttps://stackoverflow.com/questions/25457400
复制相似问题