我有一个单例类:
@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
这些我只能通过注射得到。
使用标准 Guice,您可以 注入一个类 或 自己实例化它。不是同时两者。您可以注入到现有实例中,但这很丑陋。如果您需要具有运行时确定的参数的注入实例,您应该查看辅助注入。