在下面的代码中,是否需要使用“Inject”来注释我的基类的构造函数?如果基类是抽象类怎么办?
使用DI时是否需要在构造函数中调用super?
public class Base {
@Inject
public Base(IConfig config) {
// Do stuff
}
}
public class A extends Base {
@Inject
public A(IConfig config) {
super(config);
}
}
答案 0 :(得分:4)
取决于你想要绑定的内容。如果将Base
绑定到A
(bind(Base.class).to(A.class)
),那么是,需要第二个构造函数和@Inject,但Base上的那个不是。如果您还计划构建Base
,则需要@Inject
。
关于对super()
的调用,如果只有一个带有IConfig的构造函数,Java需要它(这与Guice无关)。但是,如果您不需要在IConfig
中注入Base
,则无法阻止您删除它。