[英]How to inject this map as a bean using guice?
我正在嘗試注入一個在類中使用某些靜態常量初始化的映射。
但是,由於我是Guice的新手,所以我無法繼續前進,並且我不確定如何使用此地圖? 我要注入的地圖是:
Map> MyClass中的MyMap。
我為MyInjectedMap寫了一個類,其中包含要在其中構造MyMap的類。 我編寫了一個模塊,並將該類綁定在那里。 但這是行不通的。
public class MyInjectedMap {
private Map<String, List<String>> MyMap = new HashMap<>();
private List<String> data = 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;
}
}
並設置進樣器:
bind(new TypeLiteral<Map<String,List<String>>>(){}).annotatedWith(Names.named("MyMap")).toProvider(MyMapProvider.class);
然后注入:
@Inject @Named("MyMap") Map<String,List<String>> myMap;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.