Java 在Guice中使用命名注入

Java 在Guice中使用命名注入,java,dependency-injection,guice,Java,Dependency Injection,Guice,我正在使用Guice进行依赖注入,我有点困惑。在不同的包中有两个名为的注释: com.google.inject.name.Named和javax.inject.Named(JSR330?) 我渴望依赖javax.inject.*。代码示例: import javax.inject.Inject; import javax.inject.Named; public class MyClass { @Inject @Named("APrefix_CustomerTypeProvi

我正在使用Guice进行依赖注入,我有点困惑。在不同的包中有两个名为的注释:

com.google.inject.name.Named
javax.inject.Named
(JSR330?)

我渴望依赖
javax.inject.*
。代码示例:

import javax.inject.Inject;
import javax.inject.Named;

public class MyClass
{
    @Inject
    @Named("APrefix_CustomerTypeProvider")
    private CustomerTypeProvider customerTypeProvider;
}
在我的命名模块中,我可能有以下行:

bind(CustomerTypeProvider.class).annotatedWith(...).toProvider(CustomerTypeProviderProvider.class);
问题是:我很好奇我应该把什么放在点的位置?我希望类似于
com.google.inject.name.Names.named(“APrefix\u CustomerTypeProvider”)
的东西,但是这个返回
com.google.inject.name.named
,而我需要
javax.inject
中的那个


CustomerTypeProviderProvider.class.getAnnotation(javax.inject.Named.class)
也不适合,因为
CustomerTypeProviderProvider
(忽略愚蠢的名称,遗留问题)没有注释。

如Guice wiki上所述。你不应该担心那件事。甚至建议在可用时使用
javax.inject.*
,就像您喜欢的那样(在同一页的底部)

印刷品:

java.inject: foo
guice: foo
java.inject: foo
guice: foo