如何在scala中使用构造函数参数将单例类注入另一个类中,并仅通过构造函数创建它的对象?

问题描述 投票:0回答:1

我有一个单例类:

@Singleton
class Inject_Class_A @Inject()(
                            wsClient: WSClient,
                          )(implicit executionContext: ExecutionContext) {
// ... does something

}

我有另一个主类,我想在其中注入前一个类,它还有其他构造参数。 IDE 说它在语法上是正确的:

class Main_Class @Inject()(
                           inject_class_A: Inject_Class_A,
                           implicit val executionContext: ExecutionContext
                           )(key: String, value: String) {

// ... does something different using inject_class_A
}

现在我想创建对象为:

val main_class = new Main_Class(key: "KEY", value:"VALUE")

当然它给出了错误:

Unspecified value parameters: inject_class_A: Inject_Class_A, executionContext: ExecutionContext

我也尝试过这个方法:

class Main_Class(key: String, value: String) {

  @Inject val inject_class_A: Inject_Class_A = new Inject_Class_A()

// ... does something different using inject_class_A
}

但这不起作用,因为我没有

wsClient: WSClient
executionContext: ExecutionContext
这些我只能通过注射得到。

scala playframework guice
1个回答
0
投票

使用标准 Guice,您可以 注入一个类 自己实例化它。不是同时两者。您可以注入到现有实例中,但这很丑陋。如果您需要具有运行时确定的参数的注入实例,您应该查看辅助注入

© www.soinside.com 2019 - 2024. All rights reserved.