从 guice 私有模块公开地图

问题描述

我正在尝试从类似于 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 中提供了一个很好的代码示例。