【发布时间】:2016-11-18 21:27:04
【问题描述】:
我有以下构造函数
@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() 方法中的绑定(根据文档,但仍然没有。
有人知道我错过了什么吗?我检查了文档无济于事。
编辑:我确定我的导入是正确的
【问题讨论】:
-
您的代码看起来非常合理;您正确使用了
Named。您是否 100% 确定这不是过时的构建工件或未保存的文件? -
仔细检查您对
Named注释的导入。 -
这些是我的导入:
import com.google.inject.name.Named;很奇怪。我将尝试更多故障排除。也许我的环境有问题 -
请发布minimal reproducible example,发布的代码看起来正确,下面的答案证明我们无法复制它。有些事情你没有告诉我们。
标签: java annotations guice named