Java 在Guice中使用注释将一个bean注入到另一个bean中
我是Guice的新手,所以这可能是一个基本问题。使用模块中的以下代码正确创建Guice beanJava 在Guice中使用注释将一个bean注入到另一个bean中,java,guice,Java,Guice,我是Guice的新手,所以这可能是一个基本问题。使用模块中的以下代码正确创建Guice bean public class MyModule extends AbstractModule { @Override protected void configure() { ClassA classAObj = ClassA.standard().build(); bind(ClassA.class).toInstance(classAObj);
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));
}
}
我也尝试了一些其他的组合,但它们似乎不起作用。有人能告诉我吗
您可以简单地编写以下内容:
@Provides @Singleton
public ClassB getClassB(ClassA classA) {
return new ClassB(classA);
}
< P> >通过<代码> ClassA <代码>作为代码> GETCaseB< <代码>,Guice将考虑<代码> ClassB < /代码>取决于<代码> ClassA < /C> >,并且在调用<代码> GETCaseB(CyrAB)< /C> >之前,必须知道它必须调用<代码> GETCLSUBE(<代码> >)。 < P>您可以简单地写下:
@Provides @Singleton
public ClassB getClassB(ClassA classA) {
return new ClassB(classA);
}
通过<代码> ClassA <代码>作为代码> GETCaseB< <代码>,Guice将考虑<代码> ClassB < /代码>取决于<代码> ClassA < /C> >,并将在调用<代码> GETCaseB(CyrAB)< /C> >之前,必须调用<代码> GETCLSUBLASH(代码)>