Java 如何使用guice将此映射作为bean注入?
我试图注入一个映射,该映射是使用类中的某些静态常量初始化的 然而,我无法继续前进,因为我是Guice的新手,我不确定如何使用此地图? 我要注入的映射是: Map>MyClass中的MyMap 我为MyInjectedMap编写了一个类,其中包含了MyMap的构建位置。我编写了一个模块并将这个类绑定到那里。但这不起作用Java 如何使用guice将此映射作为bean注入?,java,guice,Java,Guice,我试图注入一个映射,该映射是使用类中的某些静态常量初始化的 然而,我无法继续前进,因为我是Guice的新手,我不确定如何使用此地图? 我要注入的映射是: Map>MyClass中的MyMap 我为MyInjectedMap编写了一个类,其中包含了MyMap的构建位置。我编写了一个模块并将这个类绑定到那里。但这不起作用 public class MyInjectedMap { private Map<String, List<String>> MyMap = ne
public class MyInjectedMap {
private Map<String, List<String>> MyMap = new HashMap<>();
private List<String> data = Arrays.asList("abc");
}
公共类MyInjectedMap{
私有映射MyMap=newhashmap();
私有列表数据=Arrays.asList(“abc”);
}
我想用我制作的数据数组列表填充MyMap。
我想问,这个类中需要编写哪个方法,以便为我提供MyMap供注入?您需要将MyInjectedMap转换为提供程序,然后在模块中适当地绑定它。假设您不希望所有映射都使用此映射,您将创建一个自定义注释或使用guice提供的@Named:
public class MyMapProvider implements Provider<Map<String,List<String>> {
private Map<String,List<String>> myMap = new HashMap<>();
public Map<String,List<String>> get() {
return myMap;
}
}
公共类MyMapProvider实现Provider如果您仅使用Guice实现注入,请查找java.lang.reflect,它为所有字段提供#set
bind(new TypeLiteral<Map<String,List<String>>>(){}).annotatedWith(Names.named("MyMap")).toProvider(MyMapProvider.class);
@Inject @Named("MyMap") Map<String,List<String>> myMap;