【发布时间】:2019-09-01 08:23:05
【问题描述】:
我是 Guice 的新手,所以这可能是一个基本问题。使用以下模块中的代码正确创建 Guice bean
public class MyModule extends AbstractModule {
@Override
protected void configure() {
ClassA classAObj = ClassA.standard().build();
bind(ClassA.class).toInstance(classAObj);
ClassB classBObj = new ClassB(classAObj);
bind(ClassA.class).toInstance(classBObj);
}
}
但我想使用注释为 ClassA 和 ClassB 创建 bean。我在模块中尝试了以下代码:
public class MyModule extends AbstractModule {
@Provides @Singleton public ClassA getClassA() {
return ClassA.standard().build();
}
@Provides @Singleton public ClassB getClassB() {
Injector injector = Guice.createInjector(new MyModule());
return new ClassB(injector.getInstance(ClassA.class));
}
}
我还尝试了一些其他组合,但它们似乎不起作用。谁能告诉我
- 在 Guice 中使用注解创建 ClassB 的 bean 时,如何将 ClassA 的 bean 作为构造函数参数注入?
与/或
- 如何将 ClassA 的 bean 设置为 ClassB 的类级变量(无构造函数路由)?
【问题讨论】: