Java 在Guice中使用注释将一个bean注入到另一个bean中

Java 在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);

我是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的类级变量(没有构造函数路由)

  • 您可以简单地编写以下内容:

    @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(代码)>