[英]Inject one bean into another with annotations in Guice
我是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));
}
}
我還嘗試了其他幾種組合,但它們似乎沒有用。 有人可以讓我知道嗎
與/或
您可以簡單地編寫以下內容:
@Provides @Singleton
public ClassB getClassB(ClassA classA) {
return new ClassB(classA);
}
通過傳遞ClassA
作為參數getClassB
,吉斯將考慮ClassB
依賴於ClassA
,並會知道,它必須調用getClassA()
調用之前getClassB(ClassA)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.