gpt4 book ai didi

scala - 带 Macwire 的可注入(inject)工厂

转载 作者:行者123 更新时间:2023-12-03 19:42:12 26 4
gpt4 key购买 nike

我正在为依赖注入(inject)梳理 MacWire。

我发现对 Guice 有用的一件事是辅助注入(inject), Autowiring 一个工厂,帮助您创建一些需要运行参数的服务。

Macwire 有类似的东西吗?

最佳答案

支持可注入(inject)工厂,但实际上并不是 MacWire 的一个功能,而是本着 MacWire 的精神,您可以“只使用 Scala”。

在这种情况下,您可以使用函数类型。按照 Guice 示例,假设您要创建一个由 startDate: Dateamount: 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

关于scala - 带 Macwire 的可注入(inject)工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25457400/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com