从 guice 私有模块公开地图

Expose Map from guice private Module

我正在尝试从类似于 Expose Map in private guice module 的私有模块公开地图,但出现错误

无法使用 @com.google.inject.name.Named(value=myMap) 注释的 expose() java.util.Map,必须显式绑定。

我写过这段代码:

expose(Map.class).annotatedWith(Names.named(myMap));

@Named("myMap")
@Provides
@Singleton
public Map<String, String> myMap() {
    // myMap
    return ImmutableMap.<String, String>builder()
            .build();
}

同样在我注射它的另一个 class 中,它给出了:

未绑定 java.util.Map 的实现。

请检查。谢谢

为此 Guice 提供了 multibinders and, in particular, for your case, MapBinder,它在其 Javadoc 中提供了一个很好的代码示例。