public class N extends R {
private final A a;
private B b;
@Inject
N(@Assisted final A a, final B b) {
a= a;
b= b;
}
}
我对此的理解是我将提供的参数“a”,而 Guice 依赖注入器将负责注入“b”,对吗?我是否需要为能够注入“b”的guice添加任何注释,我如何注入“b”?
public class N extends R {
private final A a;
private B b;
@Inject
N(@Assisted final A a, final B b) {
a= a;
b= b;
}
}
我对此的理解是我将提供的参数“a”,而 Guice 依赖注入器将负责注入“b”,对吗?我是否需要为能够注入“b”的guice添加任何注释,我如何注入“b”?
Guice 将B
根据您在Module
. @Inject
除了(您已经拥有的)之外,您不需要添加任何其他内容。这是一个基于您的课程的更完整的示例:
public class GuiceExample {
static class N {
private final A a;
private B b;
@Inject
N(@Assisted final A a, final B b) {
this.a = a;
this.b = b;
}
}
static class A {}
static class B {}
static interface NFactory {
public N create(A a);
}
static class Module extends AbstractModule {
@Override
protected void configure() {
install(new FactoryModuleBuilder().implement(A.class, A.class).build(NFactory.class));
bind(B.class); // Or however you want B to be bound...
}
}
@Test
public void test() {
Injector i = Guice.createInjector(new Module());
N n = i.getInstance(NFactory.class).create(new A());
}
}
您应该按照您认为合适的方式绑定B
您的方法。configure
你会注入NFactory
到你需要N
从A
s 生成 s 的类中。