在私人guice模块中公开地图 [英] Expose Map in private guice module

查看:64
本文介绍了在私人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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆