我有一个单例类:
@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
,这些我只能从注射只。
2条答案
按热度按时间t98cgbkg1#
使用标准的Guice,你可以 * 或者 * 注入一个类 * 或者 * 自己示例化它。不能两个都同时。你可以注入到一个现有的示例中,但这很难看。如果您需要一个带有运行时确定参数的注入示例,您应该查看Assited injection。
slwdgvem2#
一种选择是使用“wrapper”类: