Scala MacWire:是否可以像在带有Guice的@Inject中那样自动连接递归依赖的case类?
以下代码在编译时失败:Scala MacWire:是否可以像在带有Guice的@Inject中那样自动连接递归依赖的case类?,scala,dependency-injection,macwire,Scala,Dependency Injection,Macwire,以下代码在编译时失败: object Foo { case class A() case class B(a: A) case class C(b: B) lazy val a = wire[A] // Error:(14, 22) Cannot find a value of type: [QuickMain.B] lazy val c = wire[C] } 有没有可能让macwire自动推断它可以通过创建a来创建B(老实说,lazy val a=wire[a]甚
object Foo {
case class A()
case class B(a: A)
case class C(b: B)
lazy val a = wire[A]
// Error:(14, 22) Cannot find a value of type: [QuickMain.B]
lazy val c = wire[C]
}
有没有可能让macwire自动推断它可以通过创建a
来创建B
(老实说,lazy val a=wire[a]
甚至不需要)?如果macwire不能做到这一点,是否有另一个Scala框架可以以类型安全的方式做到这一点(我知道Dagger,但我正在寻找基于Scala的解决方案)
为了举例说明,在Guice中,我可以执行以下操作:
public class JavaExample {
public static class A {}
public static class B {
@Inject
public B(A a) {}
}
public static class C {
@Inject
public C(B b) {}
}
public static void main(String[] args) {
// No bindings necessary!
var injector = Guice.createInjector();
System.out.println(injector.getInstance(C.class));
}
}