[英]Guice binding not done with @Named annotation
我有以下構造函數
@Inject
public MyClass(Provider<TestClass> testProvider, @Named("myName") String name) {
//constructor stuff
}
我的模塊:
@Provides
@Named("myName")
public String getName(SomeObject object) {
return object.getName();
}
問題在於Guice不進行綁定。
現在,如果我刪除@Named
批注,它將起作用。 成功調用了getName()
方法。 但是,當添加@Named
批注時,永遠不會調用getName()
,而我的構造函數最終將被注入一個空字符串。
@Provides
注釋的方法中,只有一個返回String
,但是我仍然想為其命名,因為String
是可以注入的非常常見的對象。
我還嘗試了configure()
方法中的綁定(根據文檔,但仍然沒有。
有人知道我想念什么嗎? 我檢查了文檔無濟於事。
編輯:我確定我的進口是正確的
為我工作。 這是我用來驗證的代碼(guice 4.0):
package guice;
import com.google.inject.*;
import com.google.inject.name.Named;
public class Main {
public static void main(String[] args) {
Guice.createInjector(new MyModule()).getInstance(MyClass.class);
}
}
class MyClass {
@Inject
public MyClass(Provider<TestClass> testProvider, @Named("myName") String name) {
System.out.println(name);
}
}
class MyModule extends AbstractModule {
@Override
protected void configure() {
}
@Provides
@Named("myName")
public String getName(SomeObject object) {
return object.getName();
}
}
class SomeObject {
public String getName() {
return "helloWorld";
}
}
class TestClass {
}
按預期打印“ helloWorld”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.