问题描述
我正在尝试从类似于 Expose Map in private guice module 的私有模块公开地图,但出现错误
无法公开() java.util.Map 用@com.google.inject.name.Named(value=myMap) 注释,它必须明确绑定。
我写了这段代码:
expose(Map.class).annotatedWith(Names.named(myMap));
@Named("myMap")
@Provides
@Singleton
public Map<String,String> myMap() {
// myMap
return ImmutableMap.<String,String>builder()
.build();
}
也在我注入它的另一个类中,它给出:
没有绑定 java.util.Map
请检查。谢谢
解决方法
对此 Guice 提供 multibinders,特别是对于您的情况,MapBinder 在其 Javadoc 中提供了一个很好的代码示例。