I am new to Guice so this might be a basic question. Guice beans get created correctly with below code in Module
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);
}
}
but I want to create beans for ClassA and ClassB using annotations. I tried below code in Module:
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));
}
}
I also tried few other combinations but they don't seem to be working. Can someone please let me know
- How to inject bean of ClassA as constructor parameter while creating bean of ClassB using annotations in Guice?
AND/OR
- How to set bean of ClassA as class level variable of ClassB(without constructor route)?