在私人guice模块中公开地图 [英] Expose Map in private guice module
本文介绍了在私人guice模块中公开地图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在guice中有一个PrivateModule,我想从该模块中公开一个地图
I have a PrivateModule in guice and I want to expose a Map from that module
public class TestInjectionModule extends PrivateModule {
expose(Map.class).annoatedWith(Names.named("map"));
}
地图提供者
@Named("map")
@Provides
@Singleton
Map<String, String> providesMap(@Named("name1") String v1, @Named("name2") String v2){
return ImmutableMap.of("key1", v1, "key2", v2);
}
我遇到以下错误.
Could not expose() java.util.Map annotated with @com.google.inject.name.Named(value=map), it must be explicitly bound.
公开此地图的正确方法是什么?
what is the correct way to expose this map?
推荐答案
这甚至可以编译吗?
expose(Map.class).annotatedWith("map");
根据Javadoc, annotatedWith
带有注释,而不是字符串.
As per Javadoc, annotatedWith
takes an Annotation, not a String.
尝试一下:
expose(Map.class).annotatedWith(Names.named("map")));
Names.named()
javadoc
Names.named()
javadoc
此外,请确保在提供者方法中添加 @Provides
批注
Also, make sure to add a @Provides
annotation to your provider method
这篇关于在私人guice模块中公开地图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文